继续我之前的问题 为什么我不能从 long 派生?
我发现了一个有趣的问题。
第一步:
4294967296 & 0xFFFFFFFF00000000
结果:4294967296。
第二步。
4294967296 & 0x00000000FFFFFFFF
结果:0
啊哈,所以在这里我假设 4294967296 == 0xFFFFFFFF
让我们检查
(long)0x00000000FFFFFFFF
结果:4294967295。失败。
让我们仔细检查一下
4294967296 >> 32
结果: 1. 失败。
唯一的解释是,因为我使用 long ,其中一些位保留用于符号。在 CI 中将使用 unsigned long。你们觉得怎么样?