为什么这个xor操作在mysql中导致零?

时间:2011-03-17 20:04:15

标签: mysql bit-manipulation

为什么这个xor操作归零?

mysql> select 17246357237183571361 xor 13175113390712773921;

+-----------------------------------------------+
| 17246357237183571361 xor 13175113390712773921 |
+-----------------------------------------------+
|                                             0 |
+-----------------------------------------------+

2 个答案:

答案 0 :(得分:6)

这不是按位操作,而是逻辑操作。见http://dev.mysql.com/doc/refman/5.0/en/logical-operators.html

所以归结为1 xor 1

答案 1 :(得分:2)

长颈鹿船长的回答是正确的,但知道你可以编写以下内容让MySQL在操作数上执行按位异或,这很有用:

mysql> select 17246357237183571361 ^ 13175113390712773921;

结果将是6449217728581286016.

我需要这个来确定2个感知哈希(类似的图像搜索)的汉明距离,这很容易通过这条线来完成

BIT_COUNT(pHash1 ^ pHash2)

也许其他用户可以从中获利: - )