网站开发技术

记点笔记、 学点技术 欢迎交流建站技术。本站关注lamp技术

您尚未登录。

#1 2014-12-01 09:57:27

admin
管理员

mysql 中的位操作

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

离线

页脚

Powered by FluxBB