【问题标题】:Binary subtraction using two's complement使用二进制补码进行二进制减法
【发布时间】:2013-08-20 18:50:22
【问题描述】:
我正在尝试使用二进制形式的补码来解决以下问题。
7.5 - 6.75
7.5 - 6.75 可以改写为 (7.5)+(-6.75)
取十进制数的二进制
7.5 = 111.1
6.75 = 110.11
-6.75= 001.00
现在我应该在“.”(句点)的左侧还是右侧添加 1?
【问题讨论】:
标签:
binary
subtraction
twos-complement
【解决方案1】:
要使用 2 的补码执行有符号数 (M – N) 的减法,请执行以下操作:
- M和N的位数应该相同。
- 获取 N 的 2 的补码(包括符号位)。
- 将 N 的 2 的补码添加到 M(包括符号位)。
- 如果求和产生结束进位。丢弃末端进位。结束进位被丢弃后,最左边的位是符号位。
- 如果符号位为0,则结果为正,
- 如果符号位为 1,则结果为负。
- 如果求和没有产生结束进位,则最左边的位是符号位。
为了产生 2 的赞美:
The 2’s complement of the subtrahend 10001 = 01111
1 1 1 1 carry bits
1 0 0 1 1
+ 0 1 1 1 1
1 0 0 0 1 0
Since the summation produces an end carry the result is positive.
Discard the end carry; the result is a positive number.