Cap*_*mic 0 .net c# bitwise-operators
继续我之前的问题 为什么我不能长期得出?
我发现了一个有趣的问题.
第一步:
4294967296 & 0xFFFFFFFF00000000
Run Code Online (Sandbox Code Playgroud)
结果:4294967296.
第二步.
4294967296 & 0x00000000FFFFFFFF
Run Code Online (Sandbox Code Playgroud)
结果:0
啊哈,所以我在这里假设4294967296 == 0xFFFFFFFF
让我们检查
(long)0x00000000FFFFFFFF
Run Code Online (Sandbox Code Playgroud)
结果:4294967295.失败.
我们仔细检查吧
4294967296 >> 32
Run Code Online (Sandbox Code Playgroud)
结果:1.失败.
唯一的解释是,因为我使用了很长时间保留一些符号.在CI中将使用unsigned long.你们觉得怎么样?
4294967296 & 0xFFFFFFFF00000000 = 4294967296
Run Code Online (Sandbox Code Playgroud)
这表示值4294967296在低32位中没有设置位.实际上,4294967296是0x100000000,所以这是真的.
4294967296 >> 32 = 1
Run Code Online (Sandbox Code Playgroud)
再一次,一致.
换句话说,4294967296为0xFFFFFFFF的结论是错误的,因此其余的检查不支持这一点.