位異或
來自ALSROBOT WiKi
按位異或(^)
在C++中有一個有點不尋常的操作,它被稱為按位異或,或者XOR(在英語中,通常讀作“eks-or”)。按位異或運算符使用符號^。該運算符與按位或運算符“|”非常相似 ,唯一的不同是當(dāng)輸入位都為1時它返回0。
0 0 1 1 operand1 0 1 0 1 operand2 ---------- 0 1 1 0 (operand1 ^ operand2) - returned result
看待XOR的另一個視角是,當(dāng)輸入不同時結(jié)果為1,當(dāng)輸入相同時結(jié)果為0。
這里是一個簡單的示例代碼:
int x = 12; // binary: 1100 int y = 10; // binary: 1010 int z = x ^ y; // binary: 0110, or decimal 6
“^”運算符常用于翻轉(zhuǎn)整數(shù)表達式的某些位(例如從0變?yōu)?,或從1變?yōu)?)。在一個按位異或操作中,如果相應(yīng)的掩碼位為1, 該位將翻轉(zhuǎn),如果為0,該位不變。以下是一個閃爍引腳5的程序.
// Blink_Pin_5 // demo for Exclusive OR void setup(){ DDRD = DDRD | B00100000; // set digital pin five as OUTPUT Serial.begin(9600); } void loop(){ PORTD = PORTD ^ B00100000; // invert bit 5 (digital pin 5), leave others untouched delay(100); }