# 数据的表示和运算
# 数制与编码
# 校验码
# 奇偶校验码
- 奇校验码
整个校验码中 "1" 的个数为奇数 - 偶校验码
整个校验码中 "1" 的个数为偶数
# 定点数的表示和运算
# 定点数的运算
# 定点数的移位运算
# 算数移位
码制 | 添补代码 | |
---|---|---|
正数 | 原码、补码、反码 | 0 |
负数 | 原码 | 0 |
补码 | 左移添 0 | |
补码 | 右移添 1 | |
反码 | 1 |
# 逻辑移位
# 原码定点数的加减法运算
- 加法规则
先判断符号位,若相同,则绝对值相加,结果符号位不变;若不同,则做减法,绝对值大的数减去绝对值较小的数,结果符号位与绝对值较大的数相同 - 减法规则
两个原码表示的数相减,首先将被减数符号取反,然后将被减数与符号取反后的减数按原码加法进行运算
# 补码定点数加减法运算
- 参与运算的两个操作数均用补码表示
- 按二进制运算规则运算,逢二进一
- 符号位与数值位按同样规则一起参与运算,符号位产生的进位要丢掉,结果的符号位由运算得出
- 补码加减法运算按照下面的公式进行
- 补码的运算结果也为补码
# 符号扩展(位数转换)
- 正数
附加位都用 0 进行填充 - 负数
- 补码:附加位用 1(整数)或 0(小数)进行填充
- 反码:附加位用 1 进行填充
# 溢出概念和判别方法
# 采用一位符号位
参与操作的两个数符号相同,结果又与原操作数符号不同,表示结果溢出
# 采用双符号位
- : 结果为正,无溢出
- :正溢出
- :负溢出
- :结果为负,无溢出
# 定点数的乘法运算
# 原码一位乘法
设,, 运算规则如下:
- 被乘数和乘数取绝对值参与运算,符号位为两个数的符号位的异或运算
- 部分积的长度同被乘数,取 n+1 位,以便存放乘法过程中绝对值大于等一 1 的值,初始值为 0
- 从乘数部分最低位开始判断,若等于 1,部分积加上被乘数,右移一位;若等于 0,则部分积加上 0,右移一位
- 重复第 3 步,判断 n 次
# 补码一位乘法(Booth 算法)
- 符号位参与运算
- 被乘数一般取双符号位参与运算,部分积取双符号位,初始值为 0,乘数可去单符号位
- 乘数末尾增设附加位,初始值为 0
- 根据 的取值确定操作
- 移位按照右移规则进行
- 按照上述算法进行 n+1 步操作,但最后一步不再移位
y_ | 操作 | |
---|---|---|
0 | 0 | 部分积右移一位 |
0 | 1 | 部分积加,右移一位 |
1 | 0 | 部分积加,右移一位 |
1 | 1 | 部分积右移一位 |