408-计组 数据的表示和运算
=============================
海明码:
1,计算出信息码的个数
2, 2**k >= n + k +1; 得到校验码k 的数量
3,算出位置,校验位的位置都是2**k 一直到2**(k-1)
4,如何计校验值
是根据数据位的相互异或来确定的,至于是哪几个数据位,
是根据数据位的二进制数来确定的
example:
3 ——> 0 1 1
5 ——> 1 0 1
6 ——> 1 1 0
7 ——> 1 1 1
-----------------
那么:
p1 的数据是根据 3,5,7这三个数据的实际数值顺序异或得到的
p2 的数据是根据 3,6,7这三个数据的实际数值顺序异或得到的
p3 的数据是根据 5,6,7这三个数据的实际数值顺序异或得到的
----------------------
放到对应的位置,既能得到海明码
纠错:
用校验码和对应的数据码相异或,为0,表示正确!!!
如果是一个数据位错了怎么办?
题目中会给一个错误的海明码,根据错误的海明码计算出校验位,
比较计算出的校验位,不同的校验位数值相加即得到出错的数值位!取反即可完成纠错!!!
===================
循环冗余校验码:
这个就比较简单了,容易理解:
1,得到信息码
2,根据多项式得到除数:x**3 + x**2 +1 ——> 1101
3, 根据多项式最大幂次得到R值,然后信息码左移R位,添R个0
4,信息码加0之后 和 1101 进行 模2运算(不借位),得到余数,就是CRC码!!!
-----------------------------------
纠错:
加上CRC码之后的信息码
再次对1101进行模2运算,
结果为0,是正确的
为1,是错误的
--------------------------
只能表示CRC码长度的错误码,如果大于CRC码长度,就要进行请求重发
CRC码常用于大量数据的传输,网络的数据链路层就是用的CRC校验方式
=====================
浮点数的加减步骤:
对阶、尾数求和、规格化
(后期补上例题)
------------
over