我正在尝试理解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。
所以我对这是如何工作有点困惑,有人可以解释一下吗?
答案 0 :(得分:0)
“6”不是指第六位。它指的是二进制值。 8位:00000110。
如果您想要第六位,请使用1<<<< 6或32。
答案 1 :(得分:0)
这两个参数不是位的索引 - 它表示您以二进制表示每个数字,并独立地在每个位之间执行操作。
6 in binary: 000110
51 in binary: 110011
AND ======
000010
结果000010
是2的二进制表示。
(注意为了清楚起见,前面的零被截断了)