Arduino日本語リファレンス


^ (XOR)

原文

排他的論理和(EXCLUSIVE OR)、あるいはXORと呼ばれるちょっと便利な演算子があります(XORはエクスオアと発音されます)。XORのシンボルは「^」です。
この演算子はOR(|)に似ていますが、計算対象のビットが両方1のときは0となる点が異なります。

0 0 1 1 値1
0 1 0 1 値2
----------
0 1 1 0 (値1 ^ 値2) の結果

違う見方をすると、XORは2つのビットが異なるときだけ1となり、同じ場合は0となる、といえます。

int x = 12;     // 二進数の 1100
int y = 10;     // 二進数の 1010
int z = x ^ y;  // 二進数の 0110 (十進数の6)

XOR演算子はビットのトグル(0から1へ、1から0への変化)によく使われます。マスクビットが1のときそのビットは反転し、0のときはそのままです。

【例】

デジタルピン5をチカチカさせます。

void setup() {
  DDRD = DDRD | B00100000; // デジタルピン5をOUTPUTに
  Serial.begin(9600);
}

void loop() {
  PORTD = PORTD ^ B00100000;  // bit5(ピン5)だけ反転
  delay(100);
}



[目次へ戻る]

Creative Commons Attribution-ShareAlike 3.0 License.
このドキュメントはArduino Teamにより執筆され、Takumi Funadaが翻訳し、一部加筆修正したものです
ご意見はtf at musashinodenpa.comまでお送りください [ドキュメント一覧]