2

说明:如果可能,将这些十进制数转换为 5 位 2 的补码形式。如果不可能,请解释为什么会这样。

(16) 基地 10

根据在线转换器:

据我了解,

如果小数是正数

  • 第 1 步:将幅度转换为二进制。
  • 第 2 步:将 0 填充到所需的位大小。

如果小数为负数

  • 第 1 步:将幅度转换为二进制。
  • 第 2 步:将 0 填充到所需的位大小。
  • 第 3 步:反转位以实现 1 的补码。
  • 第 4 步:加 1 以实现 2 的补码。

由于 16 是正数,我只是通过重复除法得到 (10000) 基数 2 将其转换为二进制。

我不再填充 0,因为它已经是 5 位(包含 5 位数字)。

有人可以向我解释为什么在线转换器返回错误(我也坚信这是正确的答案)?

4

2 回答 2

3

使用 5 位,您最多可以表示 2^5 个不同的数字,因为您需要负数和正数,范围是 -16 到 +15。

所以你会得到错误,因为 16 超出了 5 位的范围。更改为 6 位,它应该可以工作

于 2013-09-23T10:41:32.300 回答
0

您需要 6 位来表示 +16,因为值 10000 表示 -16。

可视化的最佳方法是 -
00000-0
00001-1
00010-2
....
01111-15
10000-(-)16
10001-(-)15
....
尝试取 2 的补码 10000,你应该得到二进制值 16

于 2017-10-16T01:15:21.973 回答