Bitoperatoren
romanb, 14:37h
Bit-Operatoren gibt es in nahezu jeder Programmiersprache und so auch in Java. Sie arbeiten mit binären Zahlen (5 ist z.B. 0101). Auch wenn man dezimale oder hexadezimale Zahlen angibt, wird immer mit den entsprechenden binären Werten gerechnet.
Folgende Operatoren stehen in Java zur Verfügung:
& (AND)
Bits die in beiden Operanden gesetzt sind, werden gesetzt. Beispiel: 0101 & 1011 => 0001
| (OR)
Bits die in einem der beiden Operanden gesetzt sind, werden gesetzt. Beispiel: 0101 | 1011 => 1111
^ (XOR)
Bits die entweder in einem oder in dem anderen Operanden gesetzt sind, werden gesetzt, aber nicht in beiden. Beispiel: 0101 ^ 1011 => 1110
<< n(Verschiebung nach links)
Verschiebung der Bits um n Stellen nach links. Dies kommt einer Multiplikation mit 2(hoch)n gleich. Beispiel: 0010 << 2 => 1000
>> n(Verschiebung nach rechts)
Verschiebung der Bits um n Stellen nach rechts. Dies kommt einer Division mit 2(hoch)n gleich. Beispiel: 1000 >> 2 => 0010
~ (Komplement-Operator)
Sämtliche Bits werden invertiert. Beispiel: ~ 00001000 => 11110111
Auch bei den Bitweisen Operatoren können die üblichen Kurzformen verwendet werden: z.B. &=, |=, ^=, <<=, >>=.
Bitweise Arithmetik wird im Wesentlichen zum Setzen und Testen einzelner Bits und Kombinationen einzelner Bits innerhalb einer Variablen benutzt (so auch bei unserem Beispielprogramm zum speichern von RGB Farbwerten in einer Integer-Variablen). Die wichtigsten Gründe zur Benutzung bitweiser Operatoren betreffen die direkte Kommunikation mit Hardwarekomponenten oder die Arbeit mit Komprimierungsprozessen bzw. Verschlüsselungsoperationen. Das wahrscheinlich wichtigste Argument ist, dass bestimmte Vorgänge bei der Arbeit auf Bitebene bezüglich der Performance verbessert werden können. So ist "8 << 3" oft geringfügig schneller als "8 * 8" allerdings geht dies auf Dauer zu lasten der Lesbarkeit des Codes und sollte daher mit Bedacht eingesetzt werden.
Quellen zum Nachlesen:
http://www.selfjava.de/java0109.htm
http://www.informit.de/books/java2_komp/data/kap07.htm
http://www.boku.ac.at/javaeinf/jein1.html
Folgende Operatoren stehen in Java zur Verfügung:
& (AND)
Bits die in beiden Operanden gesetzt sind, werden gesetzt. Beispiel: 0101 & 1011 => 0001
| (OR)
Bits die in einem der beiden Operanden gesetzt sind, werden gesetzt. Beispiel: 0101 | 1011 => 1111
^ (XOR)
Bits die entweder in einem oder in dem anderen Operanden gesetzt sind, werden gesetzt, aber nicht in beiden. Beispiel: 0101 ^ 1011 => 1110
<< n(Verschiebung nach links)
Verschiebung der Bits um n Stellen nach links. Dies kommt einer Multiplikation mit 2(hoch)n gleich. Beispiel: 0010 << 2 => 1000
>> n(Verschiebung nach rechts)
Verschiebung der Bits um n Stellen nach rechts. Dies kommt einer Division mit 2(hoch)n gleich. Beispiel: 1000 >> 2 => 0010
~ (Komplement-Operator)
Sämtliche Bits werden invertiert. Beispiel: ~ 00001000 => 11110111
Auch bei den Bitweisen Operatoren können die üblichen Kurzformen verwendet werden: z.B. &=, |=, ^=, <<=, >>=.
Bitweise Arithmetik wird im Wesentlichen zum Setzen und Testen einzelner Bits und Kombinationen einzelner Bits innerhalb einer Variablen benutzt (so auch bei unserem Beispielprogramm zum speichern von RGB Farbwerten in einer Integer-Variablen). Die wichtigsten Gründe zur Benutzung bitweiser Operatoren betreffen die direkte Kommunikation mit Hardwarekomponenten oder die Arbeit mit Komprimierungsprozessen bzw. Verschlüsselungsoperationen. Das wahrscheinlich wichtigste Argument ist, dass bestimmte Vorgänge bei der Arbeit auf Bitebene bezüglich der Performance verbessert werden können. So ist "8 << 3" oft geringfügig schneller als "8 * 8" allerdings geht dies auf Dauer zu lasten der Lesbarkeit des Codes und sollte daher mit Bedacht eingesetzt werden.
Quellen zum Nachlesen:
http://www.selfjava.de/java0109.htm
http://www.informit.de/books/java2_komp/data/kap07.htm
http://www.boku.ac.at/javaeinf/jein1.html
Sonntag, 29. August 2004, 14:37, von romanb |
|comment
matrixkiller,
Mittwoch, 8. September 2004, 16:11
Sehr gut geschrieben !!! Hätte es nicht besser gekonnt !! ^^ @ PIG
... link
... comment
cyvascacor,
Samstag, 11. September 2004, 01:34
schön schön
Wieder einmal ein äußerst passender Text, welcher durch leichte Verständlichkeit überzeugt ;)
An "matrixkiller":
Uns is allen bekannt, dass du es nicht so oder besser hättest können ;)
_______________________
Nimms nicht so hart matrixkiller ...du bekommst auch den Homes ;)
An "matrixkiller":
Uns is allen bekannt, dass du es nicht so oder besser hättest können ;)
_______________________
Nimms nicht so hart matrixkiller ...du bekommst auch den Homes ;)
... link
... comment
saphrax,
Sonntag, 24. Oktober 2004, 14:36
zuma..
Also..n1 was den Text angeht (jaja ich weiss..kam schon 8 mal) aber noch was..Roman..du hast bei der einen Sache soetwas in der Art geschrieben, wie:
"2(hoch)n"
Das kann man mit dem "(hoch)" besser darstellen, dazu ist diese lustige "Dachtaste" da "^", was die meissten aber eher als "^^" benutzen..^^
-->
2^n
lg
"2(hoch)n"
Das kann man mit dem "(hoch)" besser darstellen, dazu ist diese lustige "Dachtaste" da "^", was die meissten aber eher als "^^" benutzen..^^
-->
2^n
lg
... link
saphrax,
Sonntag, 24. Oktober 2004, 14:40
?!
kann es sein, dass es hier unten n bissl buggy ist? Wenn ich mit der Maus z.B. über "Antworten" gehe (bei meinem comment), dann verschwindet der halbe Text. wtf?
Falsche mouseEntered Methode..?^^
Falsche mouseEntered Methode..?^^
... link
... comment
