Referencia > Nyelv > Struktúrák > Bitenkénti operátorok > Bitenkénti kizáró vagy

^

[Bitenkénti operátorok]

Leírás

Van egy kissé szokatlan operátor a C++-ban, az úgynevezett bitenkénti KIZÁRÓ VAGY, más néven bitenkénti XOR. (Az angolban ezt általában "eksz-or"-nak ejtik.) A bitenkénti XOR operátort a ^ "kalap" szimbólummal írjuk. A bitenkénti XOR művelet csak akkor eredményez 1-et, ha a bemeneti bitek eltérőek, különben 0-t.

Precízen,

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

Példa

int x = 12;     // binárisan: 1100
int y = 10;     // binárisan: 1010
int z = x ^ y;  // binárisan: 0110, vagy decimális 6

A ^ operátort gyakran használják az egész kifejezés egyes bitjeinek átváltására (vagyis 0-ról 1-re vagy 1-ről 0-ra történő megváltoztatására). A bitenkénti XOR műveletben, ha a maszkbitben 1 van, akkor ez a bit megfordul; ha 0 van, akkor a bit nem invertálódik és ugyanaz marad.

// Megjegyzés: Ez a kód az AVR mikrokontrollerekre jellemző regisztereket
// (Uno, Nano, Leonardo, Mega stb.) használ, más architektúrákhoz nem fordítható le.
void setup() {
  DDRB = DDRB | 0b00100000;  // állítsa be a PB5-öt (Uno/Nano 13-as kivezetése, Leonardo/Micro-n 9-es kivezetés, Mega 11-es kivezetése) KIMENET-ként
  Serial.begin(9600);
}

void loop() {
  PORTB = PORTB ^ 0b00100000;  // fordítsa meg a PB5-öt, a többit hagyja érintetlenül
  delay(100);
}

Lásd még

  • PÉLDA Bitmatek oktatóanyag