计组
定点数运算
补码加减法
以及判断溢出方法
原码乘法
下图是手算乘法
下图是原码乘法
因为[Y]原=1.10111,所以Y0从低位开取,分别是1,1,1,0,1。(或者说C里面存的原来渐渐被挤掉的[Y]原的低位)
如果Y0=0,不用加[X]原,因为这一位0与[X]原一定等于0,0*任何数=0。
补码乘法
乘数 y 首先在末尾添加一个辅助位 0 ,每次讨论都是取 y 的最后两位,但每次移动仅移动一位。
判断 y 的最后两位是规则如下:
- 00 或者 11 时,直接右移一位;
- 01 时,先加 x 的补,然后右移一位;
- 10 时,先加 -x 的补,然后右移一位。
参考资料
[计算机组成原理] Booth算法 —— 补码一位乘法 - 中年二班 - 博客园 (cnblogs.com)
关于双符号位
1.溢出检测:双符号位能够容易地检查加、减运算中的溢出情况。
2.符号表示:双符号位还用于表示数值的符号。例如,00表示正号,11表示负号。
3.上溢与下溢的判别:上溢发生在两个同符号的数相加(或相异符号数相减)时,运算结果超出所能表示的数据范围。
这里题目[X]原=1.01001,负数从原来的1.变成11.。
数据校验码
概念
数据在计算机内部进行计算、存取和传送过程中,由于元器件故障或噪音干扰等原因会出现差错。
冗余校验思想:除原数据信息外,还增加若干位编码,这些新增的代码称为校验位。
两个合法代码对应位上编码不同的位数称为码距,又称海明距离。
任意两个码字的海明距离的最小值称为该编码集的海明距离。
检查纠错位数 | 码距 |
---|---|
检e位 | d>=e+1 |
纠e位 | d>=2e+1 |
纠e1位、检e2位 | d>=2*e1+e2+1 |
奇偶校验码
通过增加冗余位使得码字中1的个数恒为奇数或偶数的编码方法,是一种检错码。
码距=2
海明校验码
将有效信息按某种规律分成若干组,每组安排一个校验位,做奇偶测试,就能提供多位检错信息,以指出最大可能是哪位出错,从而将其纠正。实质上,海明校验是一种多重校验。
规则:
- 如果故障字各位都是0,无故障。
- 如果故障字有且仅有一位1,校验位有一位错了,不用纠正。
- 如果故障字有多位1,数据位出错,由故障字数值确定出错位,然后取反就可以纠错。
下图为校验位数的确定
下图为分组方式(n=8、k=4)
由表可知,每个数据位至少要参与两组奇偶校验码的生成。如M5与第一组(P1)和第四组(P4)有关。
循环冗余校验码(CRC码)
M(x)为n位二进制数据,将M(x)左移k位,用约定的生成多项式G(x)相除(G(x)是一个k+1位的二进制数),相除得到的k位余数就是校验位。
检验:如果接收到的数据和校验码位用同样的生成多项式G(x)相除,若正好除尽,没有错误;除不尽,有错误。
二进制的计算
求CRC码
CRC码检错例题
CRC码出错模式(n=11,k=4为例)余数右加0再除多项式二进制取余数
加法器
笔记
下图为1位全加器逻辑电路图
下图为n位串行进位加法器
下图为并行进位全加器FA1~FA4的逻辑电路图
总结
串行进位加法器
并行进位加法器(两种)
- 组内并行组间串行
- 组内并行组间并行
延迟时间:组内并行组间并行<组内并行组间串行<串行进位加法器
复杂程度:组内并行组间并行>组内并行组间串行>串行进位加法器
原码除法运算
手算除法运算(以定点小数为例,被除数绝对值必须小于输出绝对值)
恢复余数除法(若ri<0,部分余数+除数,恢复余数)
补充:例题的符号位由0,1异或得出1
不恢复余数除法
两题答案一样