MySQL学习-运算符(八)

228 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第8天,点击查看活动详情

前言

上篇我们学习完了逻辑运算符,有兴趣的小伙伴可以阅读(# MySQL学习-运算符(七))。
下面继续学习MySQL中的运算符。今天开始学习位运算符。

逻辑运算符优先级

在学习位运算符之前,先补充一个知识点。上节学习的逻辑运算符,OR和AND是可以一起使用的,但是在使用上需要注意两者的优先级,由于AND的优先级高于OR,因此先对AND两边的操作数进行操作,再与OR中的操作数进行操作。

位运算符

位运算符是在二进制上进行计算的运算符,位运算符会先将操作数变成二进制,然后进行位运算,最后将计算结果从二进制变回十进制数。

MySQL支持的位运算符如下:

运算符名称作用示例
&按位与运算符按位与(位AND)SELECT A & B
|按位或运算符按位或(位OR)SELECT A | B
按位异或运算符按位异或(位XOR)SELECT A ^ B
~按位取反运算符按位取反SELECT ~A
>>按位右移运算符按位右移SELECT A >> 2
<<按位左移算符按位左移SELECT A << 2

按位与运算符

运算符示例一

SELECT 12 & 5
FROM DUAL
12 & 5
4

按位与运算符,先把两边的数换算成二进制,进行运算后,再把二进制转换为十进制。 二进制是从右往左,从低到高的。这里先把12和5换算成二进制。二进制一共8位,从低到高依次是2º,2¹,2²,2³,2⁴,2⁵,2⁶,2⁷。
12 = 8 + 4 = 2³ + 2² 换算成二进制是00001100
5 = 4 + 1 = 2² + 2º 换算成二进制是00000101
接着对二进制进行与运算。

& 0 0 0 0 1 1 0 0 12
0 0 0 0 0 1 0 1 5
0 0 0 0 0 1 0 0 4

12与5的二进制进行与运算,还记得逻辑与运算的口诀吗?有假即假,都真才真。从上面的表格可以计算出二进制00000100,转换成十进制是2² = 4。

按位或运算符

运算符示例二

SELECT 12 | 5
FROM DUAL
12 | 5
13

按位或运算符,先把两边的数换算成二进制,进行运算后,再把二进制转换为十进制。 这里先把12和5换算成二进制。 12 = 8 + 4 = 2³ + 2² 换算成二进制是00001100
5 = 4 + 1 = 2² + 2º 换算成二进制是00000101
接着对二进制进行与运算。

| 0 0 0 0 1 1 0 0 12
0 0 0 0 0 1 0 1 5
0 0 0 0 1 1 0 1 13

12与5的二进制进行或运算,还记得逻辑或运算的口诀吗?有真即真,都假才假。从上面的表格可以得出二进制00001101,转换成十进制是2º + 2² + 2³ = 13。

今天先学习到这里,明天继续。