我的教授向我们提出这个问题:
var stack_1 =
{
sp: 10,
stk: new Array(10),
push: function (v)
{
sp = sp - 1;
stk[sp] = v;
}
}
这样一个问题的答案是否归结为对这个问题的解释,还是有一个一致的答案?
对我来说,这似乎归结为解释,这就是为什么我要问这个问题,看看我在这些方面是对还是错。
这是我的想法:
答案是肯定的237(如果先前执行了2&#39的补充,并且11101101是签名的代表)
OR
答案是否定的19(如果假设11101101未签名,我们需要执行2&#39补充以获得00010011)
我是否正确地指出这样的问题可以归结为它的解释?或者回答这个问题的人是否应该假设已经完成了2的补充? (从而得出积极的答案237)
答案 0 :(得分:3)
考虑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
请注意,位模式保持不变,我唯一要改变的是人类可读的表示,这取决于数字是有符号还是无符号,即使内部操作相同(即添加)。