ビット列の0を1に、1を0に反転させる時に使う演算子です。
元となるビット列と、それと比較するビット列(マスクといいます)のビットが、両方とも1になっているところだけ1にする時に使う演算子です。例えば、
(2進数)1111000011110000 & (2進数)0011001100110011
の結果は、(2進数)0011000000110000となります。以下を参考にして下さい(赤の部分が、両方とも1になっているビットです)。
1111000011110000 元のビット列 0011001100110011 比較するビット列(マスク) 0011000000110000 結果
元となるビット列と、マスクのビットのどちらかが1になっているところを1にする時に使う演算子です(両方1の場合も含みます)。例えば、
(2進数)1111000011110000 | (2進数)0011001100110011
の結果は、(2進数)1111001111110011となります。以下を参考にして下さい(赤の部分が、どちらかが1になっているビットです)。
1111000011110000 元のビット列 0011001100110011 比較するビット列(マスク) 1111001111110011 結果
元となるビット列と、マスクのビットが異なるところを1にする時に使う演算子です。例えば、
(2進数)1111000011110000 ^ (2進数)0011001100110011
の結果は、(2進数)1100001111000011となります。以下を参考にして下さい(赤の部分が、互いに異なっているビットです)。
1111000011110000 元のビット列 0011001100110011 比較するビット列(マスク) 1100001111000011 結果つづく。