Reference   Language | Libraries | Comparison | Changes

Verkürztes bitweises UND

Beschreibung

Der verkürzte bitweises UND Operator (&=) wird häufig mit einer Variablen und Konstanten verwendet, um bestimmte Bits innerhalb einer Variablen gezielt in den LOW-Zustand (nach 0) zu setzen. Dies wird in Programmierhandbüchern häufig als "clearing" oder "resetting" von Bits bezeichnet.

Syntax:

x &= y;   // gleichbedeutend mit x = x & y;

Parameter

x: eine Variable vom Typ char, int oder long
y: eine Konstante vom Typ integer, char oder long

Beispiel:

Zuerst ein Rückblick auf den bitweise UND (&) Operator


   0  0  1  1    Operand1
   0  1  0  1    Operand2
   ----------
   0  0  0  1    (Operand1 & Operand2) - zurückgegebenes Ergebnis

Bits, die mit einer 0 bitweise UND-verknüpft sind, werden auf 0 zurückgesetzt, wenn myByte eine Byte-Variable ist.
myByte & B00000000 = 0; myByte & B00000000 = 0;

Bits, die mit einer 1 bitweise UND-verknüpft werden, bleiben unverändert.
myByte & B11111111 = myByte; myByte & B11111111 = myByte;

Hinweis: Weil wir hier auf Bitebene arbeiten, ist es vorteilhaft das binären Format mit Konstanten zu benutzen. Die Zahlen haben immer noch den gleichen Wert, nur in einer anderen Darstellung: zugegebenermaßen nicht leicht zu verstehen. Ebenfalls wird B00000000 zur Verdeutlichung dargestellt, aber Null in jedem anderen Zahlenformat ist und bleibt Null (Hmmm, irgendwelche Philosophen anwesend?).

Letztendlich - um bestimmte Bits mit dem Wert 0 & 1 einer Variablen auf Null zu setzen (clear), ohne den Rest der Variablen zu verändern, wird das verkürzte bitweise UND (&=) mit einer Konstante (z.B.) B11111100 verknüpft.

      1  0  1  0  1  0  1  0    Variable
      1  1  1  1  1  1  0  0    Maske
     ----------------------
      1  0  1  0  1  0  0  0

      Bits unverändert    
                        Bits zurückgesetzt (cleared)
  

Hier das gleiche Beispiel, bei dem die Bits der Variablen als x dargestellt werden.

      x  x  x  x  x  x  x  x    Variable
      1  1  1  1  1  1  0  0    Maske
     ----------------------
      x  x  x  x  x  x  0  0

      Bits unverändert    
                        Bits zurückgesetzt (cleared)
 

Also:

myByte =  10101010;

myByte &= B1111100 == B10101000;

Mehr Informationen

  • |= (compound bitwise or)
  • & (bitwise AND)
  • | (bitwise OR)

Reference Home

Corrections, suggestions, and new documentation should be posted to the Forum.

The text of the Arduino reference is licensed under a Creative Commons Attribution-ShareAlike 3.0 License. Code samples in the reference are released into the public domain.

Share