2010-12-26 9 views

Antwort

4

Wenn Sie einzelne Bits eines Datenblock bearbeiten müssen (wie ein Byte oder ein int). Dies geschieht häufig, zum Beispiel in Algorithmen Umgang mit:

  • Verschlüsselung
  • Kompression
  • Audio/Video-Verarbeitung
  • Networking (Protokolle)
  • Persistenz (Dateiformate)
  • usw.
2

Ich habe sie für Bitmasken zuvor verwendet. Angenommen, Sie haben einen Artikel mit einer Liste von Artikeln, die entweder einen Ja- oder Nein-Wert haben können (z. B. Optionen für ein Auto). Sie können eine Integerspalte zuweisen, die für jede Option einen Wert angibt, indem Sie jeder Option eine Binärstelle in der Zahl zuweisen.

Example: 5 = 101 in binary 
that would mean: 
option 1 - yes 
option 2 - no 
option 3 - yes 

Wenn Sie auf diese abfragen wären, würden Sie verwenden bitweise & oder | Bediener, um die richtigen Artikel auszuwählen.

Here is a good article, die darüber ausführlicher geht.

1

Ein Beispiel ist, wenn Sie eine (A) RGB-Farbe als integer 32 Bit gespeichert haben und Sie die einzelnen Farbkomponenten zu extrahieren:

red = (rgb >> 16) & 0x000000ff; 
green = (rgb >> 8) & 0x000000ff; 
blue = rgb & 0x000000ff; 

Natürlich wie hohe Niveau Programmierer würden Sie normalerweise bevorzugen Verwenden Sie eine Bibliotheksfunktion, um dies zu tun, anstatt selbst mit Bits zu experimentieren. Die Bibliothek könnte jedoch auch mit bitweisen Operationen implementiert werden.

+0

warum die '& 0x000000ff;'? – DarkLightA

+0

@DarkLightA: Wenn Sie fragen, warum die Operation erforderlich ist, wird es Maskierung genannt - Sie wollen nur die Bits sehen, die Sie interessieren - der Rest wird auf Null gesetzt. http://en.wikipedia.org/wiki/Mask_%28computing%29#Masking_bits_to_0 Wenn Sie fragen, warum die unnötigen Nullen da sind, ist es nur klar, dass es sich um 32-Bit-Ganzzahlen handelt, aber die führenden Nullen kann weggelassen werden, wenn Sie es wünschen. –

Verwandte Themen