首页 文章

使用2的补码减去二元分数

提问于
浏览
2

我在Stack Overflow中找到了不同的帖子,但是似乎没有人回答这个问题,因为在他们的问题中,给出了十进制表示(我的不是)或答案对我来说是模糊的(如this) .

我试图在分数或浮点数中减去二进制数字 .

0.0110
- 0.100101

给出的答案是 -0.001101 ,但解决方案未显示 . 由于我没有看到任何直接的方式( not DEC到BIN)将二进制小数位转换为2的补码,我尝试从这个解决方案中实现解决方案 . [2552144_解释) . 使用它,我的答案与指定的答案不符 .

1.011010 <- 1's complement of 0.100101
+ 0.011010
__________
  1.110100 <- 2's complement of 0.100101

然后将2的补码添加到 0.0110

0.011000
+ 1.110100
__________
 10.001100 <- discard overflow '1'

我最终得到了 0.0011 的错误答案 . 我做错了什么?我忘记了我可以使用的任何原则吗?

1 回答

  • 2

    一个来自一个_2552150的补充,增加一个单位 . 在这种情况下,单位是 0.000001 ,而不是 1 (对于整数,它是 1 ,但您不使用整数但使用 0.000001 的倍数) .

    1.011010 <- 1's complement of 0.100101
    + 0.000001
    __________
      1.011011 <- 2's complement of 0.100101
    

    添加成为:

    0.011000
    + 1.011011
    __________
      1.110011 <- 1.110011 is the two's complement of the absolute value of the answer.
    

相关问题