使用5位二进制补码进行十进制转换

时间:2014-01-11 18:27:23

标签: algorithm math binary decimal twos-complement

我被要求使用5位二进制补码显示11 + 6的计算。我发现一些令人困惑的规则但是却得出了如下所示的答案。请告诉我是否正确或者如果错误需要做什么。

11的两个补充是
01011
二的补码是6 00110
现在根据需要使用运营商添加它们:

01011 ----- 11二进制中 00110 -----二进制中的6 10001 ---总
其中十进制是17.这是正确的方法吗?因为我在二进制显示10001的结果不是10001应该意味着-1,因为二进制补码中的第一位是符号位。如果错了,请帮我解决这个问题。谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

让我们解释一下这是如何工作的。您知道1在5位二进制表示中表示为00001。要获得-1,(2的补码)的已知方法是:

  1. 反转所有位,即11110
  2. 在上一个结果中加1,导致11111等于31十进制基数(无符号)。
  3. 因此,10001不等于-1。

    现在,我们以11(基数10)为例。我们知道11等于01011

    1. 反转所有位=> 10100
    2. add 1 => 10101在无符号模式下等于21,在签名模式下等于-11。
    3. 然后,您可以推导出10001在签名模式下为-15或在无符号模式下为17。

      另外要注意,带符号的5位整数的范围是从-16到15.无符号的5位整数是从0到31的界限。在你的情况下,答案是17,这意味着它是无符号的整数或-15作为有符号整数

      希望对你有所帮助。