&

[Bitenkénti operátorok]

Leírás

A bitenkénti ÉS operátor a C++-ban egyetlen & jel, amelyet két másik egész kifejezés között használunk. A bitenkénti ÉS a kifejezések különböző helyiértékű bitpozícióján egymástól függetlenül működik, ennek a szabálynak megfelelően: ha mindkét bemeneti bit 1, akkor a kapott kimenet 1, ellenkező esetben a kimenet 0.

Más módon bemutatva:

0  0  1  1    operandus1
0  1  0  1    operandus2
----------
0  0  0  1    (operandus1 & operandus2) - a visszaadott érték

Az Arduinóban az int típus 16 bites érték, így a & használata két int kifejezés között 16 egyidejű ÉS műveletet eredményez.

Példa

Egy kódrészlet:

int a =  92;    // binárisan: 0000000001011100
int b = 101;    // binárisan: 0000000001100101
int c = a & b;  // eredmény:  0000000001000100, or 68 decimálisan.

Az a és b 16 bitje mindegyike a bitenkénti ÉS használatával kerül feldolgozásra, és mind a 16 eredményül kapott bit c-ben tárolódik, bináris értéke 01000100, ami decimálisan 68.

A bitenkénti ÉS egyik leggyakoribb felhasználási módja egy adott bit (vagy bitek) kiválasztása egy egész értékből, amit gyakran maszkolásnak neveznek. Lásd alább a példát (specifikus AVR architektúra).

PORTD = PORTD & 0b00000011;  // Törölje ki a 2-7 biteket, hagyja érintetlenül a PD0 és PD1 kivezetéseket (xx & 11 == xx)

Lásd még