MySQL 中,对于 bit 运算使用 BIGINT(64 bit)算法,因此这些操作符的最大范围是 64 bit。下面将对各种位操作进行分别介绍:
mysql> SELECT 29 | 15; -> 31
注意:其结果为一个 64 比特无符号整数。
29 ==> 00011101 15 ==> 00001111 | ------------------------ 00011111 ==> 31
mysql> SELECT 29 & 15; -> 13
注意:其结果为一个 64bit 无符号整数。
29 ==> 00011101 15 ==> 00001111 & ------------------------ 00001101 ==> 13
mysql> SELECT 1 ^ 1; -> 0 mysql> SELECT 1 ^ 0; -> 1 mysql> SELECT 11 ^ 3; -> 8
注意:其结果为一个 64bit 无符号整数。
11 ==> 00001011 3 ==> 00000011 ^ ------------------------ 00001000 ==> 8
下面把一个数左移两位,如下:
mysql> SELECT 1 << 2; -> 4
注意:其结果为一个 64bit 无符号整数。
1 ==> 00000001 << 2 ------------------------ 00000100 ==> 4
下面把一个数右移两位,如下:
mysql> SELECT 4 >> 2; -> 1
注意:其结果为一个 64bit 无符号整数。
4 ==> 00000100 >> 2 ------------------------ 00000001 ==> 1
反转所有比特。如下:
mysql> SELECT 5 & ~1; -> 4
注意:其结果为一个 64bit 无符号整数。
5 ==> 0101
1 ==> 0001 取反后为 1110
则
0101 1110 & ------------------------ 0100 ==> 4