0

我知道答案是 29,但我不知道如何得出它。

通常我会取 011101 得到 100010 的倒数,然后加 1 得到 100011。

这个值是 35。那么答案是 29?

4

5 回答 5

1

“二进制补码”这个词是模棱两可的。

  • 011101是十进制数 29 的二进制补码表示
  • 对结果执行二进制补码运算(十进制 -29,因为二进制补码表示法使用最高有效位作为符号位)。011101100011
于 2013-06-23T03:02:42.987 回答
1
011101 is 29  //Binary to Decimal
100011 + 011101 = 000000  //100011 is inverse+1
100011 = -011101  
100011 = -29

没有“35”,因为在二进制补码系统中,任何以“1”开头的数字都是负数。这意味着,假设 6 位,任何大于 31 (011111) 的数字实际上都是负数。

于 2013-06-23T02:54:46.207 回答
0

100011 是正确的,它的十进制等值确实是 35。你怎么知道它应该是 29?

于 2013-06-23T02:47:57.440 回答
0

答案35,而不是 29。

invert(0b011101) + 0b1 = 0b100010 + 0b1 = 0b100011 = 35

问题是 29 的二进制补码:

0b011101 = 29
于 2013-06-23T02:54:24.343 回答
0

“逆+1”过程用于编码负数。

你知道这个数字是正数,因为高位为零,所以:

1*2^4 + 1*2^3 + 1*2^2 + 0*2^1 + 1*2^0 = 16 + 8 + 4 + 0 + 1 = 29

于 2013-06-23T02:55:19.333 回答