【发布时间】:2014-02-17 11:55:48
【问题描述】:
我在 Stack Overflow 上浏览过与我的问题相关的不同帖子,但似乎没有人回答,因为在他们的问题中,要么给出了十进制表示(我的没有),要么答案对我来说很模糊(比如 @ 987654321@).
我正在尝试对小数或浮点中的二进制数字进行减法。
0.0110
- 0.100101
给出的答案是-0.001101,但没有给出解决方案。由于我没有看到任何直接的方法(not DEC to BIN)将二进制小数位转换为其 2 的补码,因此我尝试在二进制小数的 2 补码上实现此 lecture 的解决方案,其中你得到一点一点的补码,加上浮点部分(加小数部分的背景原理没有解释)。使用它,我的答案与指示的不符。
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 的错误答案。我做错了什么?我是否忘记了我可以使用的任何原则?
【问题讨论】:
-
当你写“十进制表示”时,你的意思是“分数表示”吗?
-
不,我的意思是二进制数的十进制对应物。就像在这个question 中一样。
-
但在我的情况下,不涉及小数。要减去的纯有符号二进制数。
标签: math floating-point binary subtraction twos-complement