MySQL 中,对于 bit 运算使用 BIGINT(64 bit)算法,因此这些操作符的最大范围是 64 bit。下面将对各种位操作进行分别介绍:
mysql> SELECT 29 | 15;
-> 31注意:其结果为一个 64 比特无符号整数。
29 ==> 00011101
15 ==> 00001111 |
------------------------
00011111 ==> 31mysql> SELECT 29 & 15;
-> 13注意:其结果为一个 64bit 无符号整数。
29 ==> 00011101
15 ==> 00001111 &
------------------------
00001101 ==> 13mysql> 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