页次: 1
mysql 中的位操作有六种。
分别是 &, |, ~, ^, << , >>.
什么是位操作, 计算机中数字都是二级制表示的, 也就是说都是 01序列。
位运算就是对这个01序列,一个一个进行逻辑运算(mysql 中逻辑运算符简介)。
第一个 & 位与 操作
mysql> select 1&2, 1&3; +-----+-----+ | 1&2 | 1&3 | +-----+-----+ | 0 | 1 | +-----+-----+ 1 row in set (0.00 sec)
因为1 = 2^0 ; 2 = 2^1; 3 = 2^0 + 2^1 所以 比较的就是
1&2 <==> 01 & 10 -> 0 1&3 <==> 01 & 11 -> 1 这里注意位运算和逻辑运算返回的值是不同的。 逻辑元素返回的是 真假mysql中是 1,0 位运算返回的是一个数值 mysql> select 3&7, 1&100; +-----+-------+ | 3&7 | 1&100 | +-----+-------+ | 3 | 0 | +-----+-------+ 1 row in set (0.00 sec)
| - 位或者运算
mysql> select 1 | 2, 3 | 7; +-------+-------+ | 1 | 2 | 3 | 7 | +-------+-------+ | 3 | 7 | +-------+-------+ 1 row in set (0.00 sec)
~ - 位非运算
mysql> select ~ 0 , ~1; +----------------------+----------------------+ | ~ 0 | ~1 | +----------------------+----------------------+ | 18446744073709551615 | 18446744073709551614 | +----------------------+----------------------+ 1 row in set (0.00 sec)
^ - 位异或
mysql> select 1^1, 1^7; +-----+-----+ | 1^1 | 1^7 | +-----+-----+ | 0 | 6 | +-----+-----+ 1 row in set (0.00 sec)
<< - 位移动
mysql> select 1 << 1, 1 << 2, 1 << 3; +--------+--------+--------+ | 1 << 1 | 1 << 2 | 1 << 3 | +--------+--------+--------+ | 2 | 4 | 8 | +--------+--------+--------+ 1 row in set (0.00 sec)
>> - 位右移
mysql> select 4 >> 1, 4 >> 2, 4 >> 3, 4 >> 4; +--------+--------+--------+--------+ | 4 >> 1 | 4 >> 2 | 4 >> 3 | 4 >> 4 | +--------+--------+--------+--------+ | 2 | 1 | 0 | 0 | +--------+--------+--------+--------+
ipbbs.net
离线
页次: 1