MYSQL按位运算

时间:2015-10-12 12:07:29

标签: mysql binary bit-manipulation bitwise-operators

我正在尝试理解MySQL中的按位运算符。

我有:

SELECT 1 & 51 FROM bits = 1
SELECT 2 & 51 FROM bits = 2
SELECT 3 & 51 FROM bits = 3
SELECT 4 & 51 FROM bits = 0
SELECT 5 & 51 FROM bits = 1
SELECT 6 & 51 FROM bits = 2

SELECT 1 & 51 FROM bits这就要求第一位(1)出现在1和51中,如果是,那么我理解这一点。

SELECT 6 & 51 FROM bits = 2对我来说没有意义,因为第6位是32(?)而不是6,因为6是从第2和第4位(?),但是32是目前在51。

所以我对这是如何工作有点困惑,有人可以解释一下吗?

2 个答案:

答案 0 :(得分:0)

“6”不是指第六位。它指的是二进制值。 8位:00000110。

如果您想要第六位,请使用1<<<< 6或32。

答案 1 :(得分:0)

这两个参数不是位的索引 - 它表示您以二进制表示每个数字,并独立地在每个位之间执行操作。

 6 in binary: 000110
51 in binary: 110011
AND           ======
              000010

结果000010是2的二进制表示。

(注意为了清楚起见,前面的零被截断了)