| (or)

OR(論理和)演算子|は2つの整数の間で使われます。
OR演算子は値の各ビットに対して個別に、次のようなルールで計算を行います。

・どちらのビットも1なら1
・どちらか一方が1のときも1
・どちらも0のときは0

0011 値1
0101 値2
------- 
0111 (値1|2)

int a =  92;   //二進数の0000 0000 0101 1100
int b =101;   //二進数の0000 0000 0110 0101
int c = a|b;    //計算結果0000 0000 1111 1101(十進数の125)

[例]
ビット演算子ANDとORは、
ポートに対するRead Modify Writeと呼ばれる処理によく使われます。
マイクロコントローラのポートはピンの状態を示す8ビットの数値で表されます。
ポートに対して(数値を)書き込む事で、それらのピンをコントロール出来ます。

PORTDはデジタルピン0~7の出力の状態を参照する為の組み込み定数です。
あるビットが1だとすると、そのピンはHIGHです。
(そのピンはあらかじめpinModeでOUTPUTに設定されている必要があります)
さて、試しにPORTD = B10001100と書き込んでみましょう。
ピン2,3,7がHIGHになりましたが、ここで一つ引っかかる事があります。
この処理によって、Arduinoがシリアル通信に使うピン0と1の状態まで
変えてしまったかもしれません。
そうすると、シリアル通信に悪影響がでます。

[アルゴリズム]
・PORTDの状態を取得してコントロールしたいピンに一致するビットだけをクリア
・変更されたPORTDの値と新しい値を結びつける