进制转换
机器数及其特点
原码特性
- 直观易懂
- 第一位为符号位
- 其他为数值位
- 正零负零两个零
- 加、减运算方式不统一
- 符号相异加法不能直接运算
- 特别当 a<b时,实现 a-b比较困难
- 从50年代开始,整数都采用补码来表示
- 但浮点数的尾数用原码定点小数表示
反码特性
- 两个零
- 求反用逻辑门容易实现
- 运算仍然很复杂
- 相加时需要将符号位的进位位增加到LSB上
补码特性
- 唯一的零
- 符号位可以直接参与运算
- 减法可以变成加法,运算电路统一
- 负数比整数多一个
- 不同位数的整数补码相加减时
- 位数少的补码符号位向左扩展
- 一直扩展到符号位对齐
定点数机器码表示范围:
双符号位补码
定点与浮点数据表示
- 机器字长一定时,阶码越长,表示范围越大
- 阶码相同,尾数越长,数据精度越高
- 浮点数表示范围比定点数大,精度高
- 阶码尾码长度应为多少合适?
- 阶码越长,表示范围越大,精度越高 (规格化)
- 浮点数扩大了数值表示的范围, 未增加表示数值的个数
- 绝对值越大,浮点数分布越稀疏,浮点数是离散空间
- 浮点运算不满足结合律
- (2-126+1020)-1020 = ? 2-126 + (1020 - 1020) =?
十进制数的表示 BCD码
数据校验的基本原理
奇偶校验
CRC校验及其实现
- 生成多项式特征
- 任意位发生错误都应使余数不为0
- 不同位发生错误余数不同
- 余数左移一位继续作模2除,应使余数循环,循环周期 N=k+r ?
如何产生生成多项式
- (n,k)码,将Xn+1分解为若干质因子 (模2的运算)
- 根据码距要求选择其中的因式或多个因式的乘积为生成多项式
码距:任意两个合法编码间不同的二进制位数 最小码距
- 码距越大,抗干扰能力、纠错能力越强,数据冗余越大,编码效率越低
- 选择码距应考虑信息出错概率和系统容错率
- 奇偶校验 最小码距为2
- 海明码 最小码距为3
(7,3)码多位错余数情况
- 两位数出错余数与一位错有重叠(见表)
- 三位错余数有可能为零 如 C1,C2,C4 (无法全部检错)
CRC串行编码电路 (时序逻辑)
- 有异或门的位置是生成多项式为1的位置,G(X)=X4+X+1 10011
- 触发器初始状态为0
- Q4=0时,不够除,下一个时钟,数据左移一位
- Q4=1时,够除,商上1, Q4Q3Q2Q1Serial_in ⊕ 生成多项式 结果左移
运算速度慢,高速设备普遍采用 并行CRC 编解码
备注:
下面我们来看一看CRC串行编码电路,注意这个串行编码电路是一个同步时序逻辑,具有统一时钟。
从图中我们可以看到这个电路的包括若干个D触发器,Q4这Q3…..一共共4个D触发器,所有D触发器时钟同步,注意D触发器之间的链接,部分是直接串联,部分D触发器之间有一个异或门,异或门一个输入连接的是当前寄存器输出,另外一个是Q4的输出。这里有异或门的地方就是CRC编码电路生成多项式为1的位置,具体如红色文字所示,Q4位置是最高位,默认为1,所以生成多项式为10011,初始状态,所有触发器输出Q4Q3Q2Q1的值均为零,最高位Q4为零,按模2的除法不够除,Q4控制所有的异或门,因为Q4为零,所有异或门位置变成数据直通,Q1直接连接到Q2的D端。
四个D触发器直接串联,变成一个移位寄存器,时钟到来数据左移一位
这和模2除法的不够除的处理过程是完全一致的。根据这个运算规则,如果左移后Q4的值仍然还是0,则会继续左移,Q3,Q2,Q1初值都为零,所以只有串行输入数据中的第一个1传输到Q4时电路才会改变运行模式,当Q4为1时,所有异或门的地方要异或上1,相当于是Q4Q3Q2Q1串行输入这一组数据和生成多项式做异或,生成多项式为1的地方进行异或运算,为0的地方异或上零还是不变,还是原始数据,这里采用直连方式,计算后的结果下一时钟会左移一位,这个电路状态就是模2除法运时最高位为1,够除,商上1,被除数和除数进行异或运算,结果左移当串行输入的最后一位数据抵达进入电路后,各触发器输入端的值D4D3D2D1就是最终的余数这样一个电路,如果串行输入的数据越长,那么它需要的时钟就越多,所以它的运算速度非常慢的,目前在高速网络设备中必须采用并行的CRC编解码电路。
(7,3)编码电路
CRC (N,k)码检错性能 r=N-k
- 所有小于等于r长度的突发错
- 通讯中常见,各出错位之间有因果关系
- 突发错长度:第一和最后一个错位之间的距离
- ( 1−2^(–r+1))比例的r+1长度的突发错
- ( 1−2^–r )比例的大于r+1长度的突发错
- 所有小于最小码距的任意位数的错误
- 如果生成多项式中1的数目为偶数,可检测所有奇数错
- 广泛运用于通信传输领域,磁存储领域
海明校验及其实现
- 多个奇偶校验组
- 既能检错,也能纠错
最小码距为3
编码规则:分组交叉奇偶校验法
- 待编码数据分成 r 个奇偶校验组,r>1
- r 位校验位(冗余),生成r位检错码
- 各数据位至少参加2个校验组
- 一个数据位出错,可导致多个检错码为1
- 检错纠错:检错码值表示出错位置 (假设1位错)
- 检错码全零, 数据大概率正常
- 可检错,也可纠错,将出错位取反即可
(4,3)码分组依据
- 可检一位错
- 检错码G3G2G1 !=000,具体值为出错位置,取反即可纠错
- 可检两位错
- 假设D1 ,D2同时出错, G3G2G1=110 ?
- 大多数三位错
- D1,D2,D3同时出错?G3G2G1=000 ?
- 能否区分区分一位错,两位错?
- 假设没有3位错
- 引入总偶校验位 P4=H1⊕H2⊕H3⊕H4⊕H5⊕H6⊕H7
- G4=P4⊕H1⊕H2⊕H3⊕H4⊕H5⊕H6⊕H7 区分一位两位错
海明码特点:
- 编码效率高:数据增加一倍,校验位只增加一位
- 可纠正一位错
- 50年代发明时用于自动处理穿孔卡片的故障
- 现在普遍用于ECC DRAM芯片
- RAID2,卫星通讯
校验码总结
习题
下列对海明校验的描述中,正确的描述是 C
A.在任何条件下,海明校验都无法检测到多位数据同时出错的情况
B.分成r组时,可以得到r位指误码,因此可以QU区分2^r种只有1位出错的情况
C.待编码数据长度为4位,再增加3位校验码就可以检测到仅1位数据出错的情况并纠错
D.海明校验码的码距与校验位的位数没有关系
计算机字长16位,采用补码表示整数,下列关于其表示数据范围的描述中正确的是ABCD
A.能表示的最小正数是1
B.能表示的最小负数是- (2 ^15)
C.能表示最大正数是(2^15) - 1
D.能表示的最大负数是-1
列关于补码和移码关系的描述中,错误的是B
A.一般用译码表示浮点数的阶码,而用补码表示定点数
B.零的补码和移码相同
C.同一个数的补码和移码,其数值部分相同,而符号相反
D.相同位数的补码和移码具有相同的数据表示范围
移码:X+2^n