十进制表示的加减法
<!--more>
# Lecture06 加减法十进制数表示
# 回顾:二进制编码的十进制表示
# 回顾:补码表示整数的加减法
# 加法溢出判定
正负 进位
# 加法
# 25 + 31 = 56
用 0010 表示 2,用 0101 表示 5
用 0011 表示 3,用 0001 表示 1
个位数和十位数的和均小于 9
# 28 + 39 = 67
0001 要再加上一个 0110 等于 0111
为什么加上 6?
二进制 10000 的第 5 位表示 16,但在十进制中实际上表示的是 10,少进了 6,所以在个位还需要再加上 6。
#
左边表格分别表示 10-19 的数,右边为实际的硬件实现。
C4 表达式的意思是,如果(S1 和 S3 为 1)或者(S2 和 S3 为 1)则肯定大于 10,若 C4 * 为 1,则肯定大于 16。【公式中的 S1、2、3 应该有星号)
C4 作为输出的同时,也对 S2 和 S1 的真正输出产生了影响。
# 减法
9-x 不会出现借位的情况。
# “反转” 数字:
- 按位反转,并添加
1010
(10) - 添加
0110
(6),并按位反转
# 结果调整
# 309-125=184 (有进位,舍弃进位)
当得到的结果在 10~19
时,都需要进行修正。 10~15
时,加上 6 进行修正。
例如,1110 + 0110 进 1 得到 0100. 即 13+6-16 (-10) 得到 3。
有进位相当于,a-b 的时候 a>b,所以 a-b = a + (999 - b) + 1 - 1000。
# 125-309 = -184(无进位,取反加 1,符号位设为负)
相当于此时 a < b
a - b = -[1000 - [a + (999 - b) + 1]]
【以上部分可参考 Lecture05 中,尾数的原码加法示例,是一样的道理】