Beispielcode
int a = 5; // Binär: 0000000000000101
int b = a << 3; // Binär: 0000000000101000, oder 40 als Dezimal
Anmerkungen und Warnungen
Wenn du einen Wert x um y Bits (x << y) verschiebst, gehen die am weitesten links liegenden y Bits in x verloren.
int x = 5; // Binär: 0000000000000101
int y = 14;
int result = x << y; // Binär: 0100000000000000 - Die erste 1 von 101 wurde verworfen
Wenn du sicher bist, dass keine der Einsen in einem Wert in Vergessenheit gerät, ist ein einfacher Weg, sich den Operator für die linke Verschiebung vorzustellen,
dass er den linken Operanden mit 2 multipliziert, um die Potenz des rechten Operanden zu erreichen.
Um beispielsweise Potenzen von 2 zu erzeugen, können die folgenden Ausdrücke verwendet werden:
Operation Ergebnis
--------- ------
1 << 0 1
1 << 1 2
1 << 2 4
1 << 3 8
...
1 << 8 256
1 << 9 512
1 << 10 1024
...
Das folgende Beispiel kann verwendet werden, um den Wert eines empfangenen Bytes an den seriellen Monitor auszugeben.
Verwende den linken Umschaltoperator, um das Byte von unten (LSB) nach oben (MSB) zu verschieben und seinen binären Wert auszugeben:
// Gibt den binären Wert (1 oder 0) des Bytes aus
void printOut1(int c) {
for (int bits = 7; bits > -1; bits--) {
// Vergleiche die Bits 7-0 im Byte
if (c & (1 << bits)) {
Serial.print("1");
}
else {
Serial.print("0");
}
}
}