数据的表示和运算
2.1数制与编码
2.1.1进位计数制
1. r进制转化为十进制
r进制的数值=各数码位与位权的乘积之和
2. 二进制和八进制的相互转化
3位对应一个二进制位
3. 二进制和十六进制的相互转化
4位对应一个二进制位
4. 十进制转化为r进制
整数部分:除基取余法
小数部分:乘基取整法
5. 真值和机器数
真值:实际的带正负号的数值
机器数:把正负号数字化的数
2.1.2 BCD码
-
8421码
①概念:四位二进制–16种状态–取其中10种状态表示一个十进制,权重分别为8421,比如9=1001,8=1000,985=1001 1000 0101
②加法运算:如果两个8421码相加落入到非法区间,结果要加6进行修正如:0101+1000=1100(1100+0110=1 0011)
-
余3码
余三码是在8421的基础上再加上3 -
2421码
权值为2421
2.1.3 字符和字符串
- 英文字符在计算机内的表示
- 中文字符在计算机内的表示
- 字符串的存储
2.1.4 奇偶校验码
1. 校验原理
有4种状态要表示,如果用2个二进制位,那就是只能表示4种状态,4种状态都是合法的,如果用3个二进制位表示的话,那就能表示8种状态,其中只有4个合法状态,如果发现接收到的数字不是合法的状态就说明传错了。
2. 奇偶校验(只能检错不能纠错)
#奇校验码:整个校验码中1的个数为奇数个(原来为偶数个就在前面补1,为奇数个就在第一位补0)
#偶校验码:整个校验码中1的个数为偶数个(原来为偶数个就在前面补0,为奇数个就在第一位补1)
#硬件实现:各个信息位进行异或运算,得到的结果为偶检验位,得到0说明有偶数个1,得到1说明有奇数个1
2.1.5 海明校验码
- 基本思想
将信息分组进行校验–设置多个校验位–多个校验位标注出出错位置。 - 求解步骤
①需要多少个校验位 信息位n=4,校验位k=3
信息位+校验位n+k,校验位k共可以表示2^k种状态,所以只需要 2^k>= n+k+1,那就可以校验所有的位
②确定校验位的分布
校验位Pi放在海明号为2^(i-1)的位置上
P1放在H1,P2放在H2,P3放在H4
信息位为1010
H7 | H6 | H5 | H4 | H3 | H2 | H1 |
---|---|---|---|---|---|---|
D4 | D3 | D2 | P3 | D1 | P2 | P1 |
1 | 0 | 1 | 0 | 0 | 1 | 0 |
③求校验位的值
H3:3------011
H5:5------101
H6:6------110
H7:7------111
异或相当于偶校验
所以第一个信息位P1=H3⊕H5⊕H7=D1⊕D2⊕D4=0(最右边为1的数)
P2=H3⊕H6⊕H7=D1⊕D3⊕D4=1(右数第二列为1的数)
P3=H5⊕H6⊕H7=D2⊕D3⊕D4=0(右数第三列为1的数)
④纠错
检验方程(都是0说明没有错)
S1=P1⊕D1⊕D2⊕D4=0
S2=P2⊕D1⊕D3⊕D4=0
S3=P3⊕D2⊕D3⊕D4=0
如果不是0的话说明第s1s2s3组成的二进制对应的十进制位出错,比如010=2就是H2位出错,就是第2位出错
总结 :海明码具有一个比特位的纠错能力和两个比特位的检验能力
2.1.6 循环冗余校验码
- 基本思想
数据发送、接受方约定一个除数
K个信息位+R个校验位作为被除数,添加校验位后需要保证除法的余数为0,接收到数据之后,进行除法检查余数是否为0 - 解题步骤
设生成多项式为G(X)=X^3 + X^2+1,信息码为101001,求对应的CRC码
①确定信息位K、