MySQL では、演算子の最大範囲が 64
ビットになるように、ビット演算に
BIGINT
(64 ビット)
算術が使用されます。
-
ビット単位の OR:
mysql> SELECT 29 | 15; -> 31
結果は符合なしの 64 ビット整数です。
-
ビット単位の AND:
mysql> SELECT 29 & 15; -> 13
結果は符合なしの 64 ビット整数です。
-
ビット単位の XOR:
mysql> SELECT 1 ^ 1; -> 0 mysql> SELECT 1 ^ 0; -> 1 mysql> SELECT 11 ^ 3; -> 8
結果は符合なしの 64 ビット整数です。
-
longlong (
BIGINT
) 数値を左にシフトします。mysql> SELECT 1 << 2; -> 4
結果は符合なしの 64 ビット整数です。値は 64 ビットに切り捨てられます。特に、シフト数が符号なし 64 ビット数値の幅以上の大きさの場合は、結果がゼロになります。
-
longlong (
BIGINT
) 数値を右にシフトします。mysql> SELECT 4 >> 2; -> 1
結果は符合なしの 64 ビット整数です。値は 64 ビットに切り捨てられます。特に、シフト数が符号なし 64 ビット数値の幅以上の大きさの場合は、結果がゼロになります。
-
すべてのビットを反転します。
mysql> SELECT 5 & ~1; -> 4
結果は符合なしの 64 ビット整数です。
-
引数
N
で設定されているビットの数を返します。mysql> SELECT BIT_COUNT(29), BIT_COUNT(b'101010'); -> 4, 3