Instructions: 如果可能,将这些十进制数转换为5位二进制补码形式 . 如果不可能,解释为什么会这样 .
(16)基地10
根据在线转换器:
据我所知,
如果小数是正数:
-
步骤1:将幅度转换为二进制 .
-
步骤2:将0填充到所需的bitsize .
如果小数为负数:
-
步骤1:将幅度转换为二进制 .
-
步骤2:将0填充到所需的bitsize .
-
步骤3:反转位以实现1的补码 .
-
步骤4:添加1以实现2的补码 .
由于16是正数,我只是通过重复除法产生(10000)基数2将其转换为二进制 .
我不再填充0,因为它已经是5位(包含5位数) .
有人可以向我解释为什么在线转换器会返回一个错误(我也坚信这是正确答案)?
2 回答
使用5位,您可以表示最多2 ^ 5个不同的数字,因为您需要负数和正数,范围是-16到15 .
所以你得到错误,因为16超出了5位的范围 . 更改为6位,它应该工作
您需要6位来表示16,因为值10000表示-16 .
可视化的最佳方式是 -
00000-0
00001-1
00010-2
....
01111-15
10000 - ( - )16
10001 - ( - )15
....
尝试使用10000的2的补码,你应该得到二进制值16