ビット演算子
反転
NOT
integer a = 2 // 0000 0000 0000 0000 0000 0000 0000 0010 return ~a // 1111 1111 1111 1111 1111 1111 1111 1101
演算
AND
ある定数 a に、b のビットが立っているかどうか確認する場合に用いる。
integer a = 0x12345678 // 0001 0010 0011 0100 0101 0110 0111 1000 integer b = 0x40 // 0000 0000 0000 0000 0000 0000 0100 0000 // ----------------------------------------------------------------- return a&b // 0000 0000 0000 0000 0000 0000 0100 0000
OR
ある定数 a に、b のビットを立てたい場合に用いる。
integer a = 0x12345678 // 0001 0010 0011 0100 0101 0110 0111 1000 integer b = 0x4 // 0000 0000 0000 0000 0000 0000 0000 0100 // ----------------------------------------------------------------- a = a|b // 0001 0010 0011 0100 0101 0110 0111 1010
XOR
ある定数 a の、b のビットだけ反転させたい場合に用いる。
integer a = 0x12345678 // 0001 0010 0011 0100 0101 0110 0111 1000 integer b = 0x40 // 0000 0000 0000 0000 0000 0000 0100 0000 // ----------------------------------------------------------------- a = a^b // 0001 0010 0011 0100 0101 0110 0011 1000
シフト
左シフト
integer a = 2 // 0000 0000 0000 0000 0000 0000 0000 0010 return a<<1 // 0000 0000 0000 0000 0000 0000 0000 0100
右シフト
integer a = 2 // 0000 0000 0000 0000 0000 0000 0000 0010 return a>>1 // 0000 0000 0000 0000 0000 0000 0000 0001
※ 右シフトにおいては、符号ビットは保存される
integer a = 16 // 0000 0000 0000 0000 0000 0000 0001 0000 integer b = -2 // 1111 1111 1111 1111 1111 1111 1111 1110 return a>>1 // 0000 0000 0000 0000 0000 0000 0000 1000 return b>>1 // 1111 1111 1111 1111 1111 1111 1111 1111