【发布时间】:2015-01-08 05:17:58
【问题描述】:
在c++中,如果变量的内存地址显示为0XFFF,例如,我不确定它是2047还是4095(包括“符号位”)。 0xFFF 是二进制的 1111 1111 1111。我最近了解了“符号位”,它只是指示数字是正数还是负数。我的另一个猜测是,在转换为 2 的补码正数后,它将是 0000 0000 0001。 所以我的问题是:0XFFF 的内存地址是否表明它是 4095 或 2047?或者,也许是 1?
【问题讨论】:
-
2 的补码 not 有符号位。那是1的补码。在 2 的补码中,最高有效位的值与其通常值相反。这就是 0xFFF = -2048 + 2047 的结果是 -1,而不是 -0。
标签: c++ memory-management twos-complement