运算|校验码
算数运算和逻辑运算
算数运算:加减乘除等
- 逻辑运算:
- 逻辑与 & : 两个为1为1
-
逻辑或 :一个1则为1 - 逻辑非 !:取反
- 逻辑亦或 :同0非一
- 逻辑左移 :符号位不变,低位补零,高位溢出
- 逻辑右移 :符号位不变,低位溢出,高位补零,细节是如果除符号位所有位置都为0,则最后一位是符号位,也就是正数右移的最小值是0,负数右移的最大值是-1
校验码
码距:码A 00 到码 B 11 需要改变的位数 这里码距是2,码距越大越利于纠错和检错
-
奇偶校验码:在编码中有奇数个1或者偶数个1
-
循环冗余校验码crc:只能检错,不能纠错,模2运算,亦或运算,商都是1,不借位。如何得到编码后结果?步骤:1 根据多项式求出除数;2根据除数进行模二运算,得到余数补充到原始报文后。
-
海明码 : 利用奇偶性检错纠错的检验方法,构成方法是数据位之间确定位置(2^n)插入k个校验位,通过扩大码距实现检错和纠错,假设数据是n位。校验位是k位,则n和k必须满足2^k-1 >= n + k
确定校验码位置:2^n 次方位是校位,其他位置就是数据位
确认校验码的值: 数据位编号(从一开始),把每一个编号按照校验位编号不重复做和拆开比如,求信息1011的海明码
检错和纠错原理:其实就是利用求值的同样方法计算亦或结果再与当前的校验位亦或。假如正确的码是1010101,发过来有错误的码是1110101
校验
r4 = r4⊕i7⊕i6⊕i5 = 1
r2 = r2⊕i7⊕i6⊕i3 = 1
r1 = r1⊕i7⊕i5⊕i3 = 0
全为0 表示正确 不全为零求110十进制值也就是6 按位取反