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
