Um einzelne Bits aus einer int-Variable auszulesen, verwendet man den Shift-Operator sowie die bitweise &-Verknüpfung.
Die Beispielsimplementierung setzt die Methode isBitSet(n, pos) um. Diese Methode gibt true zurück, wenn bei der Zahl n das Bit an der Position pos gesetzt ist.
public static boolean isBitSet(int n, int pos) { return ((n >> pos) & 1) == 1; }
Zuerst wird der Ausdruck (n >> pos
) ausgewertet. Der Operator >>
(Shift-Operator) verschiebt die Bits von n um pos Positionen nach rechts.
Das Bit an der gesuchten Position pos wird an die Position mit dem Index 0 geschoben.
Sieht man bei einer Zahl vom Wert des Bits am Index 0 ab, ist das Ergebnis einer bitweise &-Verknüpfung von n mit 1 (binär: 0 ... 001
) eine Folge von Nullen.
Hat das Bit der um pos Positionen verschobenen Zahl n am Index 0 den Wert 1, liefert eine bitweise &-Verknüpfung mit 1 den Wert 1.
Hat das Bit der um pos Positionen verschobenen Zahl n am Index 0 den Wert 0, liefert eine bitweise &-Verknüpfung mit 1 den Wert 0.
Beispiel:
0010 1101 (45) 0000 0101 (45 >> 3) 0000 0101 & 0000 0001 (1) ------------- 0000 0001