有符号整数值在计算机内存中如何表示?
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
请注意位模式保持不变,我唯一要更改的是人类可读表示,具体取决于数字是有符号还是无符号,即使内部操作相同(即加法)。
我的教授向我们提出了这个问题:
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
请注意位模式保持不变,我唯一要更改的是人类可读表示,具体取决于数字是有符号还是无符号,即使内部操作相同(即加法)。