计算机基础:海明码是什么?
海明码:奇偶校验码的⼀种扩充。只能检验和恢复⼀位。
例如:
求1011 的海明码?
答案:1010101
其中:红⾊所在位数 1,2,4,8,... 为计算出的验证码,
⿊⾊的信息为原信息码:1011。
计算⽅法:
1.先计算需要⼏位海明码?
1011 是四位 ,
它有四种只错⼀位的情况,(0011,1111,1001,1010)
再加上x位海明码的错⼀位情况。
再加上⼀种全部位都正确的情况。
所以海明码需要    x+4+1 中可能。
所以需要海明码x位可以表⽰出 x+4+1 中可能。
天天向上杨幂唐嫣即: x+4+1 <=2**x  (2**x 表⽰2的x⽅),计算得到3,
海明码最少是3,当然4,5,6位都可以,就像⽤101 校验和0101  00101 000101 00000000101 都能校验⼀样,只是⽐较浪费。
所以计算出了海明码的位数为3。(其实也就是往原编码内填充1,2,4,8,16,这些地⽅,填完为⽌。)
苍井空电影2. 开始计算。
1011 中间插⼊三位验证码
位数7654321
信息101x1x x
在第7位:
7=2**2+2**1+2**0=4+2+1
6 对应位置为0,不算在内。
5=2**2 +2**0 = 4 +1
3=2**1+2**0 =2+1
这样得到
(2**0) 出现三次,所以在最低位为1 ,(出现偶数次就是0,奇数次就是1,)(原计算⽅法是⽤异或计算 1 xor 1 =0 , 1xor 0 =1 , 0 xor 0=0 ,这⾥结果都⼀样)
(2**1)出现两次,所以第⼆位是0,
(2**2)出现两次,所以第三位是0,
所以就得到
位数7654321
信息1010101
3.验证和举例
我们传输这个得到的海明码,和⼀个错误的海明码:
正确的验证 1010101 :
1.得到海明码(1,2,4 位,如果更长的话就是8,16,32。。。位)001。
2.信息码为剩下的 1011,同步骤⼆:计算得到001,
3.和上⾯的到的海明码001 异或(001 xor 001 ) =000,正确
人生感悟精辟短语
错误的验证 1110101 :社保卡查询个人账户
1.得到海明码 001。
2.信息码1111 ,计算:
  7=2**2+2**1+2**0=4+2+1
  6=2**2+2**1 =4+2
英格兰vs伊朗预测  5=2**2 +2**0 = 4 +1
  3=2**1+2**0 =2+1
  (2**0)出现3次,(2**1)出现3次,(2**2)出现3次。得到海明码:111
3.和上⾯的到的海明码001异或(111 xor 001)=110 =6 代表是第六位出错,也即是1110101 改为1010101。
火焰之纹章烈火之剑攻略最后再重申⼀下:
海明码是只能验证和恢复⼀位,两位三位同时错的话是⽆效的。