MySQL按位运算
Posted
技术标签:
【中文标题】MySQL按位运算【英文标题】:MySQL bitwise operations 【发布时间】:2016-01-09 21:49:42 【问题描述】:我正在尝试理解 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.
所以我对它的工作原理有点困惑,有人可以解释一下吗?
【问题讨论】:
【参考方案1】:这两个参数不是位的索引 - 这意味着您用二进制表示每个数字,并独立执行每个位之间的操作。
6 in binary: 000110
51 in binary: 110011
AND ======
000010
结果,000010
,是 2 的二进制表示。
(请注意,为清楚起见,前面的零被截断了)
【讨论】:
所以说位“2”出现在 6 和 51 中,即使没有 4? 是的。 6=4+2; 51=32+16+2+1 所以 4 & 51 为 0 因为 4: 000100 和 51: 110011,并且 4 中的位在 51 中没有使用? @imperium2335 是的,完全正确。 所以 4 | 51 会返回 4,因为 000100 在 4 中?【参考方案2】:“6”不是指第六位。它指的是二进制值。 8位:00000110。
如果您想要第六位,请使用 1
【讨论】:
所以Mysql是从右到左而不是像php那样从左到右? @imperium2335 。 . .文档将“1以上是关于MySQL按位运算的主要内容,如果未能解决你的问题,请参考以下文章