将十进制转换为二进制补码

时间:2013-09-23 10:34:06

标签: binary decimal twos-complement ones-complement

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

(16)base 10

根据在线转换器:

据我了解,

如果小数为正

  • 步骤1:将幅度转换为二进制。
  • 步骤2:将0填充到所需的bitsize。

如果小数为负

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

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

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

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

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

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

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