Tsql和(&)令人困惑

HHH*_*HHH 1 sql t-sql sql-server

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

Result
8
Run Code Online (Sandbox Code Playgroud)

有人可以帮我弄这个吗.8的结果怎么样?我有点迷失了.

最后一位数字656878503183可能是3

0011 AND
1000
-----
0000 
Run Code Online (Sandbox Code Playgroud)

这是0

shr*_*t18 5

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

1001100011110001000000101000010100001111
0000000000000000000000000000000000001000
----------------------------------------
0000000000000000000000000000000000001000
Run Code Online (Sandbox Code Playgroud)

注意:我使用这个工具来执行转换,实际上并没有自己评估这个东西,所以我建议你仔细检查转换是否正确只是为了确定.