Diese Seite ist auch in 2 anderen Sprachen verfügbar.
Sprache wechseln  

<<

[Bitwise Operators]

Beschreibung

Der Left-Shift-Operator << bewirkt, dass die Bits des linken Operanden um die vom rechten Operanden angegebene Anzahl von Positionen nach links verschoben werden.

Syntax

variable << number_of_bits

Parameter

variable: Erlaubte Datentypen: byte, int, long.
number_of_bits: Eine Zahl < = 32. Erlaubte Datentypen: int.

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");
    }
  }
}

Siehe auch