一起养成写作习惯!这是我参与「掘金日新计划 · 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。
今天先学习到这里,明天继续。