Mail to Code: Tutorial

Lernt, wie man den Code für Rechenknechte schreibt.

English version 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







Du findest diese Seite klasse?

Gummibärchen als Nervennahrung beim Programmieren und der Betrieb dieses Servers verschlingen mein Geld.
Helft mit einer Motivationsspritze, dieses Projekt am Laufen zu halten.

Klick hier oder scan den QR Code, um eine Spende zu überweisen.



Vielen Dank!

Fragen? Anregungen? Fehler gefunden?
Kontakt per E-mail: question@h1i1.de