浮点加法解释

Fly*_*ynn 0 floating-point

我正在学习浮点加法,我在一个部分比较困惑.我正在使用的例子是这样的:

(假设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.有人可以向我解释一下吗?

Eri*_*hil 5

首先,缩放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.