Ich weiß, was sie tun, ich verstehe einfach nicht, wenn man ihnen einen Einsatz bekommen würde ..Bitweise Operatoren - wann/wie verwenden Sie die Operatoren &, |, ^, >> etc?
Antwort
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.
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.
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.
- 1. C# Operatoren Bitweise
- 2. Unterschied zwischen >>> und >> Operatoren
- 3. Einige Fragen über bitweise Operatoren
- 4. Priorität der Operatoren:> und ==
- 5. Wie werden bitweise Operatoren in HQL verwendet?
- 6. VBA wertet> und <Operatoren falsch
- 7. Was bedeuten diese Operatoren in Elixir? ~ >>, << ~
- 8. Endian-Abhängigkeit in Bit-Verschiebung, bitweise Operatoren
- 9. Erstellen Sie eine Maske, die das signifikanteste gesetzte Bit markiert, indem Sie nur bitweise Operatoren verwenden.
- 10. Perl vergleichen Operatoren und stringified "Zahlen"
- 11. Was tun die Operatoren '& =' und '= &'?
- 12. Wie machen die "<<" and ">>" Operatoren I/O?
- 13. Meine Methode muss weniger Operatoren verwenden
- 14. Warum PHP zwei hat „nicht gleich“ Operatoren (= und <>!)
- 15. Verwenden Sie Operatoren in Vorlagen in C++
- 16. Sind>? oder <? legitime Operatoren in jedem C++ - Dialekt?
- 17. Trace/Debug-Powershell-Operatoren
- 18. Überladene Operatoren auf Zeigern verwenden
- 19. MongoDB $ gt/$ lt-Operatoren mit als Strings gespeicherten Preisen
- 20. ! = ODER <> ODER NICHT IN Operatoren Unterstützt in ODATA?
- 21. Links assoziative Operatoren vs rechten assoziative Operatoren
- 22. C++ fstream << and >> Operatoren mit binären Daten
- 23. Sollten die Postfix-Operatoren nicht als binäre Operatoren betrachtet werden
- 24. Binärformat, bitweise Operationen existieren? z.B. << 16 # 7F, 16 # FF >> bsl 1
- 25. Verwenden von Operatoren mit Objekten in Java
- 26. && = und || = Operatoren
- 27. Operatoren Auswertung
- 28. Was ist der richtige Weg, um die Stream-Operatoren zu überlasten << >> für meine Klasse?
- 29. Was macht x >>> 0?
- 30. Wie binäre Operatoren "<" and ">" zum Vergleichen von Objekten in Java zu verwenden?
warum die '& 0x000000ff;'? – DarkLightA
@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. –