计算机网络
### BCD码8421码
8421码(有权码)的映射关系:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|---|
0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 |
例题1:1+3=4 -> 0001 + 0011 = 0100
例题2:5+8=13 -> 原:0101 + 1000 =1101 修正过程:1101 + 0110 = 0001 0011
相加后不在映射表内,则需要在原结果后在加上0110
例题3:在计算机中的保存形式985:1001 1000 0101
余3码
余3码:8421码+(0011)无权吗
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|---|
0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 | 1010 | 1011 | 1100 |
2421码
2421码
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|---|
0000 | 0001 | 0010 | 0011 | 0100 | 1011 | 1100 | 1101 | 1110 | 1111 |
【注】2421码规定在5(1011)及以后的数字首位一定是1
ASCII码
1. 可印刷的字符:32~126,其余为控制字符
2. 大写字母:65(0100 0001) ~ 90(0101 1010)小写字母:97~122
奇偶校验
检验原理简介
信息 | A | B | C | D |
编码 | 00 | 01 | 10 | 11 |
2bit映射到4个合法状态 |
信息 | A | B | C | D |
编码 | 100 | 001 | 010 | 111 |
3bit映射到4个合法状态 (有4个冗余的非法状态) |
1. 由若干位代码组成的字叫<mark>码字</mark>。
2. 将两个码字逐位对比,具有不同的位的个数称为<mark>两个码字间的距离</mark>。
3. 一种编码方案可能有若干个合法码字,各合法码字间的最小距离称为“<mark>码距</mark>”。
4. 当(码距)d=1时,无检错的能力;当d=2时,有检错的能力;当d=3时,若设计合理,可能有检错、纠错能力
奇偶校验码
1. 奇校验码:整个校验码(有效信息位数和校验位)中“1”的个数为奇数。
2. 偶校验码:整个校验码(有效信息位数和校验位)中“1”的个数为偶数。

【例题1】给出两个编码1001101和1010111的奇校验码和偶校验码。
设最高位为校验码,其余7位是信息位,则对应的奇偶校验码:
奇校验码:11001101 01010111
3. 偶校验的硬件实现:各信息进行异或运算(模2加)运算,得到的结果即为偶校验位
- 异或运算:1⊕1=0;1⊕0=1(相同为1,不同为0)
- 进行偶校验结果为为0这编码传输正确,结果为1说明错误
- 奇偶校验只能检测出奇数个传输位的错误,若有偶数个传输位错误则不能检测数
海明校验码
海明码的设计思路简介
将信息位分组进行偶校验->多个校验位->多个校验位标注出错位置
【问题1】:一串编码n位需要多少个校验位?
- 信息位n位,需要k为校验位,k位校验码能表示2k种状态
海明码求解步骤
【例题】信息位1010
- 确定海明码位数:2k≥n+k+1
n=4–>k=3
设信息位D4D3D2D1,共4位,校验位为P3P2P1,共3位,对应的海明码位H7H6H5H4H3H2H1。
- 确定校验位分布
H7 | H6 | H5 | H4 | H3 | H2 | H1 |
D4 | D3 | D2 | P3 | D1 | P2 | P1 |
1 | 0 | 1 | 0 |
校验位Pi放在海明位号为2i-1的位置上
信息位按顺序放在其余位置
-
求校验位
-
3.1将信息位所对应的海明码下标用二进制表示
-
H3:011
-
H5:101
-
H6:110
-
H7:111
-
-
3.2从左往右将同一列二进制分为一组
-
H3:011–D1
-
H5:101–D2
-
H6:110–D3
-
H7:111–D4
列 数1(D1) 数2(D2) 数3(D3) 数4(D4) 第一列 1 1 0 1 第二列 1 0 1 1 第三列 0 1 1 1
表1
信息位表 D1 D2 D3 D4 0 1 0 1 -
-
-
3.3将表1中每列中数为1所对应的信息位的值进行异或运算
- P1 = D1 ⨁ D2 ⨁ D4 = 0 ⨁1 ⨁ 1 = 0
- P2 = D1 ⨁ D3 ⨁ D4 = 0 ⨁ 0 ⨁ 1 = 1
- P3 = D2 ⨁ D3 ⨁ D4 = 1 ⨁ 0 ⨁ 1 = 0
H7 H6 H5 H4 H3 H2 H1 D4 D3 D2 P3 D1 P2 P1 1 0 1 0 0 1 0 - P1 = D1 ⨁ D2 ⨁ D4 = 0 ⨁1 ⨁ 1 = 0
-
检错纠错
-
将3.3中的运算式子加上对应的校验位进行异或运算,得到结果全为0说明信息无误
- S1 = P1 ⨁ D1 ⨁ D2 ⨁ D4 = 0 ⨁ 0 ⨁1 ⨁ 1 = 0
- S2 = P2 ⨁ D1 ⨁ D3 ⨁ D4 = 1 ⨁ 0 ⨁ 0 ⨁ 1 = 0
- S3 = P3 ⨁ D2 ⨁ D3 ⨁ D4 = 0 ⨁ 1 ⨁ 0 ⨁ 1 = 0
接收到的的信息:1010010
-
如果得到的信息有去一位不为0
【例】接收到的信息为:1010000
-
S1 = P1 ⨁ D1 ⨁ D2 ⨁ D4 = 0 ⨁ 0 ⨁1 ⨁ 1 = 0
-
S2 = P2 ⨁ D1 ⨁ D3 ⨁ D4 = 0 ⨁ 0 ⨁ 0 ⨁ 1 = 1
-
S3 = P3 ⨁ D2 ⨁ D3 ⨁ D4 = 0 ⨁ 1 ⨁ 0 ⨁ 1 = 0
从S3到S1的结果连接起来的:010 (2),组成的二进制指明海明码的第2位H2出现错误
-
-
-
海明码检错、纠错能力
- 检错能力——2位
- 纠错能力——1位
加上“全校验码”的海明码
H8 | H7 | H6 | H5 | H4 | H3 | H2 | H1 |
P全 | D4 | D3 | D2 | P3 | D1 | P2 | P1 |
1 | 1 | 0 | 1 | 0 | 0 | 1 | 0 |
-
全校验码:通过所有海明码的值进行偶校验得到全校验位的值
- H8 = 0 ⨁ H7 ⨁ H6 ⨁ H5 ⨁ H4 ⨁ H3 ⨁ H2 ⨁ H1
- H8 ⨁ H7 ⨁ H6 ⨁ H5 ⨁ H4 ⨁ H3 ⨁ H2 ⨁ H1 = 0
-
校验方程 :
- S1 = P1 ⨁ D1 ⨁ D2 ⨁ D4 = 0 ⨁ 0 ⨁1 ⨁ 1 = 0
- S2 = P2 ⨁ D1 ⨁ D3 ⨁ D4 = 1 ⨁ 0 ⨁ 0 ⨁ 1 = 0
- S3 = P3 ⨁ D2 ⨁ D3 ⨁ D4 = 0 ⨁ 1 ⨁ 0 ⨁ 1 = 0
- S3S2S1 = 000且全体偶校验成功 ->无错误
- S3S2S1 ≠ 000且全体偶校验失败->有1位错误,纠正即可
- S3S2S1 ≠ 000且全体偶校验成功 ->有2位错误,需重传
循环冗余验证码
循环冗余校验码的基本思想:
- 发送方和接收方约定一个“除数”
- K个信息位+R位校验位作为“被除数”,添加校验位后需保证除法的余数为0
- 收到信息后,进行除法检查余数是否为0
- 若余数非0说明出错,则进行重传或者纠错
【例题】设生成多项式位G(x) = x3 + x2 + 1,信息码101001对应的的CRC码。
-
确定K、R以及多项式对应的二进制码
- K = 信息码的长度 = 6
- R = 生成多项式的最高次幂 = 3
- ->校验码位数N = K + R = 9
- 生成多项式G(x) = x3 + x 2 + 1 = 1 * x3 + 1 * x2 + 0 * x1 + 1 * x0,对应的二进制码:1101
-
移位
- 信息码左移R位,低位补0
-
相除
- 对移位后的信息码,用多项式进行模2除,产生余数 。
对应的CRC码是101001 001 |
-
检错和纠错
-
发送:101001 001 记为:C9C8C7C6C5C4C3C2C1
-
接收:如下图,余数为000,代表没错
-
接收:如下图,余数为010,代表出错
-
定点数的表示
定点数 vs 浮点数
定点数:小数点的位置固定 Eg: 996.007——常规计数
浮点数:小数点的位置不固定 Eg:9.96007*102——科学计数法
本节总览
无符号数的表示
无符号数: 整个机器字长的全部二进制均为数值位,没有符号位,相当于输的绝对值
1001 1100B
=1 * 27 + 0 * 26 + 0 * 25 + 1 * 24 + 1 * 23 + 1 * 22 + 0 * 21 + 0 * 20
=156D
216 | 215 | 214 | 213 | 212 | 211 | 210 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
65535 | 32768 | 16384 | 8192 | 4096 | 2048 | 1024 | 512 | 256 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
表示范围
8位二进制:28种不同状态
0000 0000~1111 1111
0 ~ 255 = 28 - 1