十进制表示的加减法
<!--more>

# Lecture06 加减法十进制数表示

# 回顾:二进制编码的十进制表示

image-20221018161625312

# 回顾:补码表示整数的加减法

image-20221018161749133

# 加法溢出判定

正负 进位

image-20221018162304448

# 加法

image-20221018162440184

# 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。

#

image-20221018163500884

左边表格分别表示 10-19 的数,右边为实际的硬件实现。

C4 表达式的意思是,如果(S1 和 S3 为 1)或者(S2 和 S3 为 1)则肯定大于 10,若 C4 * 为 1,则肯定大于 16。【公式中的 S1、2、3 应该有星号)

C4 作为输出的同时,也对 S2 和 S1 的真正输出产生了影响。

# 减法

image-20221018164311877

9-x 不会出现借位的情况。

# “反转” 数字:

  • 按位反转,并添加 1010 (10)
  • 添加 0110 (6),并按位反转

image-20221018190527126

# 结果调整

image-20221018164745084

# 309-125=184 (有进位,舍弃进位)

image-20221018194656730

当得到的结果在 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,符号位设为负)

image-20221018194641391

相当于此时 a < b

a - b = -[1000 - [a + (999 - b) + 1]]

【以上部分可参考 Lecture05 中,尾数的原码加法示例,是一样的道理】

# 总结

image-20221018164912432