Nameless Site

But one day, you will stand before its decrepit gate,without really knowing why.

0%

数据表示

进制转换

image-20191220003552325

机器数及其特点

image-20191219231153151

原码特性

  • 直观易懂
    • 第一位为符号位
    • 其他为数值位
  • 正零负零两个零
  • 加、减运算方式不统一
    • 符号相异加法不能直接运算
    • 特别当 a<b时,实现 a-b比较困难
  • 从50年代开始,整数都采用补码来表示
  • 但浮点数的尾数用原码定点小数表示

反码特性

  • 两个零
  • 求反用逻辑门容易实现
  • 运算仍然很复杂
    • 相加时需要将符号位的进位位增加到LSB上

补码特性

  • 唯一的零
  • 符号位可以直接参与运算
  • 减法可以变成加法,运算电路统一
  • 负数比整数多一个
  • 不同位数的整数补码相加减时
    • 位数少的补码符号位向左扩展
    • 一直扩展到符号位对齐

image-20191219231207351

image-20191219232033377

image-20191219232235893

定点数机器码表示范围:
image-20191219232325487

双符号位补码

image-20191220004143783

定点与浮点数据表示

image-20191219233804226

image-20191219233824924

image-20191219233857085

image-20191219233918638

image-20191220005108307

image-20191220005139118

image-20191219233929847

  • 机器字长一定时,阶码越长,表示范围越大
  • 阶码相同,尾数越长,数据精度越高
  • 浮点数表示范围比定点数大,精度高
  • 阶码尾码长度应为多少合适?
  • 阶码越长,表示范围越大,精度越高 (规格化)
  • 浮点数扩大了数值表示的范围, 未增加表示数值的个数
  • 绝对值越大,浮点数分布越稀疏,浮点数是离散空间
  • 浮点运算不满足结合律
    • (2-126+1020)-1020 = ? 2-126 + (1020 - 1020) =?

十进制数的表示 BCD码

image-2019

数据校验的基本原理

image-20191219234631646

image-20191219234643400

image-20191219234654617

奇偶校验

image-20191220005825812

image-20191219235642154

image-20191219235921834

CRC校验及其实现

image-20191220001405535

  • 生成多项式特征
    • 任意位发生错误都应使余数不为0
    • 不同位发生错误余数不同
    • 余数左移一位继续作模2除,应使余数循环,循环周期 N=k+r ?
  • 如何产生生成多项式

    • (n,k)码,将Xn+1分解为若干质因子 (模2的运算)
    • 根据码距要求选择其中的因式或多个因式的乘积为生成多项式
  • 码距:任意两个合法编码间不同的二进制位数 最小码距

  • 码距越大,抗干扰能力、纠错能力越强,数据冗余越大,编码效率越低
  • 选择码距应考虑信息出错概率和系统容错率
    • 奇偶校验 最小码距为2
    • 海明码 最小码距为3

image-20191220001447447

image-20191226232339760

image-20191220001757864

(7,3)码多位错余数情况

  • 两位数出错余数与一位错有重叠(见表)
  • 三位错余数有可能为零 如 C1,C2,C4 (无法全部检错)

image-20191226232647970

CRC串行编码电路 (时序逻辑)

image-20191226233101210

  • 有异或门的位置是生成多项式为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)编码电路

image-20191226233311840

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位错)
    • 检错码全零, 数据大概率正常
    • 可检错,也可纠错,将出错位取反即可

image-20191220003136644

image-20191220003145152

(4,3)码分组依据
image-20191226231723570

image-20191220003206327

image-20191220003218848

image-20191220003228764

image-20191220003246821

  • 可检一位错
    • 检错码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 区分一位两位错

image-20191226231946271

海明码特点:

  • 编码效率高:数据增加一倍,校验位只增加一位
  • 可纠正一位错
  • 50年代发明时用于自动处理穿孔卡片的故障
  • 现在普遍用于ECC DRAM芯片
  • RAID2,卫星通讯

校验码总结

image-20191220010548069

习题

下列对海明校验的描述中,正确的描述是 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