一、进位计数制
二进制-->八进制:每三个二进制对应一个八进制位(注意补位)
二进制-->十六进制:每四个二进制位对应一个十六进制位(注意补位)
十进制-->r进制:整数部分:除基取余法,先取得的‘余’是整数的低位
小数部分:乘基取整法,先取得的‘整’是小数的高位
真值:实际的带正负号的数值
机器数:把正负号数字化的数
二、BCD码
(1)8421码
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 |
若十进制加法使用8421码进行运算超出0000 - 1001 区间内需要 + 0110 来进行修正
eg :
十进制 : 9 + 9 = 18 = 1 8
8421码:1001 + 1001 = 10010 + 0110 = 0001 1000
(2)余3码:8421码 + 0011
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 | 1010 | 1011 | 1100 |
(3)2421码:改变权值定义
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
0000 | 0001 | 0010 | 0011 | 0100 | 1011 | 1100 | 1101 | 1110 | 1111 |
规定0-4 :首位为 ‘0’ 5-9:首位为 ‘1’
三、字符与字符串
(1)ASCll码
通常用8 bit 表示一个字符,最高位都为 0
共有128位字符,0-31、127为控制/通信字符;32-126为可印刷字符
所有大写字母,所有小写字母,所有数字的编码都连续
(2)字符串
从地址到高地址逐个字符存储,通常采用 ‘\0’ 作为结尾标志
对于多字节的数据,可以采用大/小端存储模式
大端模式:将数据的最高有效字节存放在低地址单元中
小端模式:将数据的最高有效字节存放在高地址单元中
四、数据的校验
(1)检验原理
由若干个代码组成的一个字称为码字
将两个码字逐位进行对比,具有不同的位的个数称为两个码字之间的距离
一种编码方案可能由若干个合法码字,各个合法码字间的最小距离称为“码距” (即每个码字之间有多少个 bit 位不同)
当码距=1时,无检错能力;当码距=2时,有检错能力;当码距>=3时,若设计合理,可能具有检错、纠错能力
(2)奇偶校验
奇校验码:整个校验码(有效信息和校验位)中“1"的个数为奇数
偶校验码:整个校验码(有效信息和校验位)中”1“的个数为偶数
eg:1001101 的奇校验码:1(奇校验位)1001101 偶校验码:0(偶校验位)1001101
偶校验的硬件实现:各信息进行异或运算(相同为’0‘,相异为’1‘)得到的结果为偶校验位
eg:1001101 的偶校验位为:1⊕0⊕0⊕1⊕1⊕0⊕1=0 即偶检验码为:01001101
若偶校验码在进行异或运算得到结果为’1‘时,则说明信息传输发生了错误
eg:当奇数个bit发生错误时 0⊕1⊕0⊕0⊕1⊕1⊕0⊕0=1 可以检错
当偶数个bit发生错误时 0⊕1⊕0⊕0⊕1⊕1⊕1⊕0 =0 无法检错
(3)海明码
海明码设计思想:将信息位分组进行偶校验-->多个校验位
2^k>=n+k+1:k为校验位个数
n | 1 | 2-4 | 5-11 | 12-26 | 27-57 | 58-120 |
k | 2 | 3 | 4 | 5 | 6 | 7 |
eg:信息码为 1010 对应的海明码应该为h1 h2 h3 h4 h5 h6 h7校验位的分布为2^n(n=0到k-1)
h7 | h6 | h5 | h4(p3) | h3 | h2(p2) | h1(p1) |
1 | 0 | 1 | 0 |
求校验位的值:
h3:3 -->0 1 1
h5:5 -->1 0 1
h6:6 -->1 1 0
h7:7 -->1 1 1
h1(p1) = h3⊕h5⊕h7 = 0⊕1⊕1 = 0
h2(p2) = h3⊕h6⊕h7 = 0⊕0⊕1 = 1
h4(p3) = h5⊕h6⊕h7 = 1⊕0⊕1 = 0
纠错校验方程:
s1 = p1⊕h3⊕h5⊕h7
s2 = p2⊕h3⊕h6⊕h7
s3 = p3⊕h5⊕h6⊕h7
在首位加上一个全体偶校验位h8
s3s2s1 =000 且全体偶校验成功则说明没有错误
s3s2s1 != 000 且全体偶校验失败则说明出现1位错误且eg:s3s2s1 = 100 则说明在h4发生错误
s3s2s1 != 000 且全体偶校验成功则说明出现2位错误
(4)循环冗余校验码(CRC码)
CRC码:K个信息位+R个校验位
CRC码思想:数据发送、接收方约定一个“除数”,K个信息位+R个校验位作为“被除数”,添加校验位后需保证除法的余数为’0‘,收到数据后,进行除法检验,若余数不为’0‘则需要重新发送
eg:设生成多项时G(X) = x^3+x^2+1,信息码位101001对应的CRC码
K=信息码长度=6 R= 生成多项式的最高次幂 = 3 校验码位数= 6+3 = 9
G(X)=1*x^3+1*x^2+0*x+1*x^0对应二进制码1101
信息码左移R位,低位补0,即101001000
对移位的信息码用生成多项式的二进制码进行模2除法,产生余数
得到余数为001 即CRC码 = 101001 001
检错、纠错能力:
可以检测处所有奇数个错误
可以检测出所有双比特的错误
可以检测处所所有小于等于校验位长度的连续错误
若选择合适的生成多项式,且2^R >= K+R+1,则可以纠正单比特的错误