省略号部分都是 0,101 前面总共有 61 个 0。

注意:为了方便大家阅读,本节在介绍正数的补码时,省略了前面的 0。
 
MySQL 支持 6 种位运算符,如下表所示。

MySQL 中的位运算符

运算符

说明

使用形式

举例

|  

位或  

a | b  

5 | 8  

&  

位与  

a & b  

5 & 8  

^  

位异或  

a ^ b  

5 ^ 8  

~  

位取反  

~a  

~5  

<<   

位左移  

a << b  

5 << 2,表示整数 5 按位左移 2 位  

>>   

位右移  

a >> b  

5 >> 2,表示整数 5 按位右移 2 位  

位运算中的&、|、~和逻辑运算中的&&、||、!非常相似。

位或运算符 |
参与|运算的两个二进制位有一个为 1 时,结果就为 1,两个都为 0 时结果才为 0。例如1|1结果为 1,0|0结果为0,1|0结果为1,这和逻辑运算中的||非常类似。

例 1
使用位或运算符进行正数运算,SQL 语句如下:

mysql> SELECT 10|15,9|4|2;
+-------+-------+
| 10|15 | 9|4|2 |
+-------+-------+
| 15 | 15 |
+-------+-------+
1 row in set (0.00 sec)
10 的补码为 1010,15 的补码为 1111,按位或运算之后,结果为 1111,即整数 15;9 的补码为 1001,4 的补码为 0100,2 的补码为 0010,按位或运算之后,结果为 111,即整数 15。

例 2 
使用位或运算符进行负数运算,SQL 语句如下:

mysql> SELECT -7|-1;
+----------------------+
| -7|-1
|
+----------------------+
| 18446744073709551615 |
+----------------------+
1 row in set (0.00 sec)
-7 的补码为 60 个‘1’加 1001,-1 的补码为 64 个‘1’,按位或运算之后,结果为 64 个‘1’,即整数 18446744073709551615。
 
可以发现,任何数和 -1 进行位或运算时,最终结果都是 -1 的十进制数。

dawei

【声明】:邵阳站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。