海明码编码解码规则示例

校验位的规则

1. 校验位的位置

规则(位置从右边算起):
第一个位置为 20= 1
第二个位置为21 = 2
第三个位置为22 = 4
第n个位置为 2n

2. 校验位的个数规则

满足为:2r > x+r+1 (其中 r 为校验位的个数, x 为员信息码的个数)
例如: 有一个信息吗为:1011
则 x = 4
23 > 4 + 3 + 1 成立
所以: r = 3
总共就是7位,下面用一个表格来说明下:

第七位 第六列 第五位 第四位 第三位 第二列 第一位
1 0 1 r3 1 r2 r1

其中r0 r1 r2就是 海明校验码的位置

3. 海明码的解析规则

接下来还是用上面的表格说明:

第七位 第六列 第五位 第四位 第三位 第二列 第一位
111 110 101 100 011 010 001
x4=1 x3=0 x2=1 r3 x1=1 r2 r1

这里我添加了一列记录所在位数的2进制,在下面的解析过程中可以用到
解析r1 : r1为第一位,所以找 x1 x2 x3 x4 中的第一位为1的数为: x1 x2 x4 将这些数作亦或运算
推导出 r1 = x1 (XOR) x2 (XOR) x4 = 1 (异或:同0异1)

解析r2 : r2为第二位,所以找 x1 x2 x3 x4 中的第二位为1的数为: x1 x3 x4 将这些数作亦或运算
推导出 r2 = x1 (XOR) x3 (XOR) x4 = 0

解析r3 : r3为第三位,所以找 x1 x2 x3 x4 中的第三位为1的数为: x2 x3 x4 将这些数作亦或运算
推导出 r3 = x2 (XOR) x3 (XOR) x4 = 0

得出海明码为: 001
最终得出的海明码转码后的结果为: 1010101

3. 海明码的纠错过程

数据没有出错得到的结果为: 1010101
如果修改第6位数据为:1110101
根据这个数据可以导出:
r1 = 1 r2 = 0 r3 = 0
x1 = 1 x2 =1 x3 =1 x4 = 1
按照原来的规则亦或操作:
r1 (XOR) x1 (XOR) x2 (XOR) x4 = 0 (如果没有出现错误值应该为位 0)
r2 (XOR) x1 (XOR) x3 (XOR) x4 = 1 (如果没有出现错误值应该为位 0)
r3 (XOR) x2 (XOR) x3 (XOR) x4 = 1 (如果没有出现错误值应该为位 0)
得到 110 = 6 故第6位出现错误(将第6位的数据取反就可以实现纠正);

参考地址:(49条消息) 海明码 编码规则 – CSDN

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇