
Mail to Code: Tutorial
Lernt, wie man den Code für Rechenknechte schreibt.
English Version
Bitmanipulation
Dualzahlen können auf verschiedene Weise miteinander "verknüpft" werden. Dabei werden die einzelnen Bits zweier Zahlen entspechend der angegebenen Verknüpfung zu einer neuen Zahl kombiniert.
Bitweise UND
Beim bitweise verknüpfen zweier Dualzahlen mit dem UND-Operator, dargestellt als "&", werden in der Ergebnisvariablen diejenigen Bits auf "1"gesetzt, die in beiden Ausgangsvariablen den Wert "1" aufweisen. Ist nur ein oder gar kein Bit der beiden Ausgangsvariablen eine "1", so ist das resultierende Bit der Ergebnisvariablen eine "0". Geschrieben wird die Operation im Programm als:
uint8_t variable_1 = 0b11011001;
uint8_t variable_2 = 0b01110101;
uint8_t result = variable_1 & variable_2;
Die Operation ergibt:
11011001
& 01110101
----------
= 01010001
Bitweise ODER
Beim bitweise verknüpfen zweier Dualzahlen mit dem ODER-Operator, dargestellt als "|", werden in der Ergebnisvariablen diejenigen Bits auf "1"gesetzt, die in mindestens einer der Ausgangsvariablen den Wert "1" aufweisen. Ist gar kein Bit der beiden Ausgangsvariablen eine "1", so ist das resultierende Bit der Ergebnisvariablen eine "0". Geschrieben wird die Operation im Programm als:
uint8_t variable_1 = 0b11011001;
uint8_t variable_2 = 0b01110101;
uint8_t result = variable_1 | variable_2;
Die Operation ergibt:
11011001
| 01110101
----------
= 11111101
Bitweise Exclusiv ODER
Exclusiv ODER wird als XOR abgekürzt. Beim bitweise verknüpfen zweier Dualzahlen mit dem XOR-Operator, dargestellt als "^", werden in der Ergebnisvariablen diejenigen Bits auf "1"gesetzt, die in NUR EINER der Ausgangsvariablen den Wert "1" aufweisen. Ist gar kein Bit oder sind beide Bits der beiden Ausgangsvariablen eine "1", so ist das resultierende Bit der Ergebnisvariablen eine "0". Geschrieben wird die Operation im Programm als:
uint8_t variable_1 = 0b11011001;
uint8_t variable_2 = 0b01110101;
uint8_t result = variable_1 ^ variable_2;
Die Operation ergibt:
11011001
^ 01110101
----------
= 10101100
Bitweise NICHT
Der Operator bitweise NICHT kann immer nur auf eine Variable angewendet werden. Dargestellt wird dieser als als "~". Dieser gibt an, dass alle Bits in der Variablen invertiert werden sollen. Alle Bits mit dem Wert"1" werden auf "0"gesetzt, alle Bits mit dem Wert "0" auf "1". Geschrieben wird die Operation im Programm als:
uint8_t variable_1 = 0b11011001;
uint8_t result = ~variable_1;
Die Operation ergibt:
~ 11011001
----------
= 00100110
Verschiebeoperatoren
Die Bits einer Variablen können mit dem Verschiebeoperaor nach links oder rechts um eine vorgegebene Anzahl an Stellen verschoben werden.
Verschieben nach links wird mit einem doppelten "kleiner als" angegeben. Dabei werden die rechten Stellen mit Nullen aufgefüllt. Das folgende Beispiel verschiebt die Bits von variable_1 um 3 Stellen nach links:
uint8_t variable_1 = 0b11011001;
uint8_t result = variable_1 << 3;
Die Operation ergibt:
11011001 << 3
--------------
= 11001000
Beim Verschieben nach rechts (doppeltes "größer als") werden die linken Stellen mit Nullen aufgefüllt:
uint8_t variable_1 = 0b11011001;
uint8_t result = variable_1 >> 2;
Die Operation ergibt:
11011001 >> 2
--------------
= 00110110