Zurück in den alten Tagen, als ich in einem rasenden Schneesturm in beide Richtungen zur Schule gehen musste, und Mittagessen war was Tier wir in den Wäldern hinter der Schule aufspüren und mit unseren bloßen Händen töten konnten, hatten Computer viel weniger Speicher verfügbar als heute. Der erste Computer, den ich jemals benutzt habe, hatte 6K RAM. Nicht 6 Megabyte, nicht 6 Gigabyte, 6 Kilobyte. In dieser Umgebung war es sehr sinnvoll, so viele Boolesche Werte wie möglich in einen int-Wert zu packen. Daher verwenden wir regelmäßig Operationen, um sie herauszunehmen und einzufügen.
Heute, wenn die Leute dich verspotten mit nur 1 GB RAM, und der einzige Ort, an dem man eine Festplatte mit weniger als 200 GB finden kann, ist ein Antiquitätenladen, es lohnt sich einfach nicht, die Sachen zu packen.
in C++ können Sie "Pack" die Daten von Bit-Feldern. 'struct Gepackt {unsigned int flag1: 1; unsigned int flag2: 1; }; '. Die meisten Compiler werden einen vollständigen "unsigned int" zuweisen, jedoch behandeln sie das Bit-Twiddling selbst, wenn Sie lesen/schreiben.Auch sie beschäftigen sich selbst mit den Modulo-Operationen. Das ist ein 'unsigned small: 4' Attribut hat einen Wert zwischen 0 und 15, und wenn es 16 werden soll, überschreibt es nicht das vorhergehende Bit :) –