Files
nand2tetris/Neu/bitoperationen-16bit.md
T
2026-07-16 10:33:54 +02:00

3.1 KiB

Bitmanipulation in 16-Bit-Zahlen

Ein einzelnes Bit in einer 16-Bit-Zahl wird über eine Maske angesprochen. Die Bitverschiebung erzeugt die Maske, die logische Operation entscheidet, was mit dem Zielbit passiert.


1. Die Maske: Bitverschiebung

1 << n schiebt die 1 um n Stellen nach links. Es entsteht eine Maske, bei der genau Bit n gesetzt ist.

1           0000 0000 0000 0001
1 << 1      0000 0000 0000 0010
1 << 2      0000 0000 0000 0100
1 << 3      0000 0000 0000 1000
1 << 7      0000 0000 1000 0000
1 << 15     1000 0000 0000 0000
  • Bit 0 = niederwertigstes Bit (LSB, rechts)
  • Bit 15 = höchstwertigstes Bit (MSB, links)
  • Jede Verschiebung um 1 nach links entspricht einer Multiplikation mit 2 → 1 << n ist 2ⁿ

2. Übersicht der Operationen

Ziel Operation Ausdruck
Bit setzen OR zahl |= (1 << n)
Bit löschen AND mit invertierter Maske zahl &= ~(1 << n)
Bit abfragen AND if (zahl & (1 << n))
Bit umschalten XOR zahl ^= (1 << n)

3. Beispiele

Ausgangswert: zahl = 0000 0000 1010 0101 (0x00A5)

Bit:  15 14 13 12 | 11 10  9  8 |  7  6  5  4 |  3  2  1  0
       0  0  0  0 |  0  0  0  0 |  1  0  1  0 |  0  1  0  1

3.1 Bit setzen — OR (|)

zahl        0000 0000 1010 0101
1 << 3      0000 0000 0000 1000     |
                                    -----
Ergebnis    0000 0000 1010 1101
                            ^ neu 1

Wahrheitstabelle: 0|0=0, 0|1=1, 1|0=1, 1|1=1 → Maske-0 lässt durch, Maske-1 erzwingt 1.

3.2 Bit löschen — AND mit ~ (& ~)

1 << 2      0000 0000 0000 0100
~(1 << 2)   1111 1111 1111 1011

zahl        0000 0000 1010 0101
~Maske      1111 1111 1111 1011     &
                                    -----
Ergebnis    0000 0000 1010 0001
                             ^ jetzt 0

Wahrheitstabelle: 1&1=1, 1&0=0, 0&x=0 → Maske-1 lässt durch, Maske-0 erzwingt 0.

3.3 Bit abfragen — AND (&)

Bit 5 ist gesetzt:

zahl        0000 0000 1010 0101
1 << 5      0000 0000 0010 0000     &
                                    -----
Ergebnis    0000 0000 0010 0000  != 0  -> Bit ist gesetzt

Bit 4 ist nicht gesetzt:

zahl        0000 0000 1010 0101
1 << 4      0000 0000 0001 0000     &
                                    -----
Ergebnis    0000 0000 0000 0000  == 0  -> Bit ist nicht gesetzt

3.4 Bit umschalten — XOR (^)

zahl        0000 0000 1010 0101
1 << 0      0000 0000 0000 0001     ^
                                    -----
Ergebnis    0000 0000 1010 0100
                               ^ 1 -> 0

Dieselbe Operation nochmal stellt den Ausgangswert wieder her:

            0000 0000 1010 0100
            0000 0000 0000 0001     ^
                                    -----
            0000 0000 1010 0101  -> Ausgangswert

Wahrheitstabelle: 0^0=0, 0^1=1, 1^0=1, 1^1=0 → Maske-0 lässt durch, Maske-1 kippt.


4. Merksatz

Die Verschiebung baut die Maske, die logische Operation bestimmt die Wirkung: OR zum Setzen, AND-mit-~ zum Löschen, AND zum Prüfen, XOR zum Umschalten.