为什么呢?
我的意思是,(针对 32 位整数而言)据我所知,最高有效位在有符号数据类型中表示符号(即使用位 0x80000000 表示负数)。那么,1 是 0x00000001……0x7FFFFFFF 是 int 数据类型可以容纳的最大正数。
因此,据我所知,-1 int 的二进制表示应该是 0x80000001(也许我错了)。为什么/如何将这个二进制值转换为完全不同的东西(0xFFFFFFFF),当将 int 强制转换为 unsigned 时?或者说……如何用 0xFFFFFFFF 来表示二进制 -1?
我毫不怀疑,在 C 中:((unsigned int) -1) == 0xFFFFFFFF 或 ((int) 0xFFFFFFFF) == -1 同真理一样不变,就像 1 + 1 == 2 一样,只是我想知道为什么。
0xFFFFFFFF
。 - David Schwartz