有符号整数值在计算机内存中如何表示?

How are signed integers values represented in computer memory?

我的教授向我们提出了这个问题:

What is the (base 10) signed integer value of 11101101 ?

像这样的问题的答案是否归结为对问题的解释,还是有一个固定的答案?

对我来说,这似乎归结为解释,这就是为什么我问这个问题,看看我在这些方面是对还是错。

这是我的看法:

答案是肯定的237(如果之前进行了2的补码,并且11101101是有符号表示)

答案是否定的19(如果假设11101101是无符号的,需要进行2的补码得到00010011)

所以我说这样的问题可以归结为对它的解释是否正确?或者回答这个问题的人应该假设 2 的补码已经执行了吗? (从而给出肯定的答案237)

考虑 4 位;

0   0000    0
1   0001    1
2   0010    2
3   0011    3
4   0100    4
5   0101    5
6   0110    6
7   0111    7

8   1000    -8
9   1001    -7
A   1010    -6
B   1011    -5
C   1100    -4
D   1101    -3
E   1110    -2
F   1111    -1

如果数字是无符号的,人类会将位模式理解为左列。

如果数字是带符号的,人类会将位模式理解为右列。

以十进制10 - A 1010 -6为例;

如果签名 3 - 6 = -3 将如下所示:

(3)     0011 +
(-6)    1010
----    ----
(-3)    1101

如果数字是无符号的,则完全相同的操作如下所示 3 + 10 = 13:

(3)     0011 +
(A)     1010
----    ----
(D)     1101

请注意位模式保持不变,我唯一要更改的是人类可读表示,具体取决于数字是有符号还是无符号,即使内部操作相同(即加法)。