问题描述
对于负整数,它们的 2 的补码存储在内存中。我对正整数感到困惑。它们直接以二进制格式存储,或者也以 2 的补码存储。有符号和无符号请注明。
解决方法
二进制补码作为一种有符号二进制表示形式用于计算。
为此目的保存了一位。所以一个正数和一个负数在内存中存储的完全相同,只是一个位表示它是否为正。
内存中的正 127:
127 -> 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1
内存中的负 127:
-127 -> 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1
如您所见,如果 MSB(最高有效字节)包含 1,则表示它是负数,所有字节都反转并且整数加一。