我正在学习浮点加法,我在一个部分比较困惑.我正在使用的例子是这样的:
(假设8位机器,指数超过-3)
x = 6.75 = 01011011
y = -10 = 11100100
Run Code Online (Sandbox Code Playgroud)
反规范并使用相同的指数给出:
x = 1.1011 x 2^2 = 0.1101 x 2^3
y = -1.0100 x 2^3
Run Code Online (Sandbox Code Playgroud)
添加/减去尾数给出:
01101 + -10100 = -00111
Run Code Online (Sandbox Code Playgroud)
我不太懂01101 + -10100 = -00111.有人可以向我解释一下吗?
首先,缩放1.1011•2 2应该给出0.11011•2 3,而不是0.1101•2 3.提前丢弃位是错误的.
但是,考虑到它的方式,我们想要计算01101 + -10100.将较大的数字放在较小的数字上方并记住,因为较大的数字是负数,结果必须为负数:
1 0 1 0 0
0 1 1 0 1
_________
Run Code Online (Sandbox Code Playgroud)
现在减去小学的方式.在右边,我们从0减去1.这需要从左边的数字借用,所以我们从10减去1(0加上借来的值)并标记借入:
1 0 1 0'0
0 1 1 0 1
_________
1
Run Code Online (Sandbox Code Playgroud)
现在我们从-1减去0(0减去借位).这需要再次借用,所以我们从1减去0(0减去1的借位加上新借的10):
1 0 1'0'0
0 1 1 0 1
_________
1 1
Run Code Online (Sandbox Code Playgroud)
然后从0开始1(1减去借来的1).我们再次借用,所以我们从10减去1:
1 0'1'0'0
0 1 1 0 1
_________
1 1 1
Run Code Online (Sandbox Code Playgroud)
然后从-1开始1(0减去借来的1).我们再次借用,所以我们从1减去1(0减去借来的1加上新借的10):
1'0'1'0'0
0 1 1 0 1
_________
0 1 1 1
Run Code Online (Sandbox Code Playgroud)
然后0从0开始(1减去借来的1).最后,没有新的借款,我们有:
1'0'1'0'0
0 1 1 0 1
_________
0 0 1 1 1
Run Code Online (Sandbox Code Playgroud)
我们记得这是否定的,所以结果是-00111.
| 归档时间: |
|
| 查看次数: |
1550 次 |
| 最近记录: |