MySQL学习-运算符(九)

176 阅读2分钟

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

前言

上篇我们学习了一部分位运算符,有兴趣的小伙伴可以阅读(# MySQL学习-运算符(八))。
下面继续学习MySQL中的运算符。今天继续学习位运算符。

位运算符

按位异或运算符

运算符示例一

SELECT 12 ^ 5
FROM DUAL
12 ^ 5
4

按位异或运算符,先把两边的数换算成二进制,进行运算后,再把二进制转换为十进制。 这里先把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 0 0 1 9

12与5的二进制进行异或运算,两边表达式不同是真,相同是假。从上面的表格可以计算出二进制00001001,转换成十进制是2º + 2³ = 9。

按位取反运算符

按位取反(~)运算符将表达式的值转换成二进制,按位取反,即将1变为0,将0变为1。

运算符示例二

SELECT 10 & ~1
FROM DUAL
10 & ~1
10

按位取反,先把值转换为二进制。1转换为二进制是00000001。按位取反后是11111110,再与10做与运算,得出值转换成二进制还是10。

取反 0 0 0 0 0 0 0 1 1
& 1 1 1 1 1 1 1 0 ~1
0 0 0 0 1 0 1 0 10
0 0 0 0 1 0 1 0 10

从上面的表格可以计算得出二进制是00001010,转换成十进制是10。

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