>>
右ビット単位のシフトです。それはビットを取り、それらを右にn桁1シフトします。たとえば、35 >> 2
次のことを調べてみましょう。
35 = 100011 shift two places
001000 = 8
そして確かに、35 >> 2 == 8
。
|
ビットごとのORです。各オペランドの各ビットを取り、それらをOR演算します。一種の2進加算として想像することはできますが、上と下の両方がである場合は実行しません1
。たとえば、ここにあります5 | 3
:
5 = 101
3 = 011
| -----
111 = 7
そして確かに、5 | 3 == 7
。
最後に&
、ビット単位のANDです。各オペランドの各ビットを受け取ります。ただし、一方のビットまたは他方のビットのいずれかが1の場合は1を与える代わりに、一方のビットともう一方のビットが両方とも1の場合は1を与えます。たとえば、ここにあります5 & 3
:
5 = 101
3 = 011
& -----
001 = 1
やってみよう; 5 & 3 == 1
。
他に注意したいの<<
は、左ビット単位のシフトである、と^
XOR(両方のビットが同じ場合は0、異なる場合は1)です。
1実際には、32を法とするnです。1 >> 32
は1
です。理由はわかりません。