Das lernst du heute
- Bits setzen, löschen und prüfen
- Masken
- not und negative Zahlen
Gestern hast du gesehen, wie viele Bits in einer Zahl stecken. Heute setzt, löschst und prüfst du sie einzeln. Die Befehle kennst du seit Woche 4: and, or, xor und nor. Damals hast du sie mit 0 und 1 benutzt. Tatsächlich arbeiten sie auf jedem Bit einer Zahl einzeln.
Bit für Bit
| Befehl | Bit im Ergebnis ist 1, wenn … |
|---|---|
and | beide Bits 1 sind |
or | mindestens eins 1 ist |
xor | genau eins 1 ist |
nor | beide 0 sind |
not | das Bit 0 war (nur ein Eingang) |
and r0 %1100 %1010 # %1000 = 8
or r1 %1100 %1010 # %1110 = 14
xor r2 %1100 %1010 # %0110 = 6
Masken
Eine Maske ist eine Zahl, deren 1-Bits sagen, welche Stellen dich interessieren. Damit gibt es vier Handgriffe:
| Ziel | Befehl | Beispiel für Bit 2 |
|---|---|---|
| Bit setzen | or mit Maske | or r0 r0 %100 |
| Bit löschen | and mit umgedrehter Maske | not m %100, dann and r0 r0 m |
| Bit prüfen | and mit Maske, dann snez | and r1 r0 %100 |
| Bit umschalten | xor mit Maske | xor r0 r0 %100 |
not und negative Zahlen
not dreht alle Bits um. Aus 0 wird nicht 1, sondern −1, denn „alle Bits 1“ bedeutet bei vorzeichenbehafteten Ganzzahlen −1. Aus 5 wird −6. Das ist kein Fehler: not x ist immer −x − 1.
Praktisch ist not für Löschmasken. not maske %100 liefert eine Zahl, in der nur Bit 2 null ist. and damit löscht genau dieses Bit, egal wie lang die Zahl ist:
not maske %100 # alle Bits 1 außer Bit 2
and wert wert maske # Bit 2 gelöscht
nor x 0 ist übrigens dasselbe wie not x – beide Eingänge 0 heißt beim nor 1.
Logisches und bitweises and sind derselbe Befehl. and r0 2 1 ergibt 0, obwohl beide Werte „wahr“ sind: 2 ist %10, 1 ist %01, kein Bit gemeinsam. Mit reinen 0/1-Werten verhält sich and logisch, mit anderen Zahlen nicht. Mach Wahrheitswerte deshalb vorher mit snez zu 0 oder 1.
Bitbefehle wandeln Kommazahlen vorher in Ganzzahlen um. 5,7 wird dabei zu 5 – der Nachkommaanteil fällt weg.
Schaubild
Übung
Aufgabe
In wert (r0) steht ein Statuswort. Berechne mit Bitbefehlen:
gesetzt= wert mit Bit 2 gesetztgeloescht= wert mit Bit 0 gelöscht (Maske mitnotbauen)geprueft= 1, wenn Bit 4 gesetzt ist, sonst 0gekippt= wert mit Bit 1 umgeschaltetumgedreht= alle Bits von wert umgedreht
Hinweise
Hinweis 1
Setzen mit or, umschalten mit xor, umdrehen mit not.
Hinweis 2
Löschen: not maske 1, dann and geloescht wert maske.
Hinweis 3
Prüfen: and mit %1_0000, dann snez.
Quiz
5 Fragen. Ab 60 % ist das Quiz bestanden – die Auswertung macht der Server.
Tag abschließen
- Übung im Simulator bestanden
- Quiz mit mindestens 60 % bestanden
Ohne Konto wird der Fortschritt nur in diesem Browser gespeichert.
Fehler in dieser Lektion melden
Zum Melden bitte anmelden. Anmelden