Tsql AND(&)令人困惑

时间:2014-08-29 12:51:38

标签: sql sql-server tsql

Select Cast(656878503183 as bigint)  & Cast(8 as bigint)

Result
8

有人可以帮我解决这个问题。 8的结果怎么样?我在这方面有点迷失。

656878503183的最后一位数可能是3

0011 AND
1000
-----
0000 

是0

1 个答案:

答案 0 :(得分:5)

在二进制中,较大的值表示为1001100011110001000000101000010100001111,8表示为1000.如果您注意到,右侧的第4位为1。因此,bitwise and操作仅针对该位评估为1,而针对所有其他操作评估为0。因此,将bitwise and应用于2个数字的结果将最终为0000 .... 1000,这又是8。

1001100011110001000000101000010100001111
0000000000000000000000000000000000001000
----------------------------------------
0000000000000000000000000000000000001000

注意:我使用了this工具来执行转换,实际上并没有自己评估这个内容,因此我建议您仔细检查转换是否正确,以确定。

相关问题