校验码
在数据的传输的过程中,可能会发生数据的偏差与错误,为了查出错与纠错就设置了校验码。
奇偶校验码
奇偶校验码属于校验码的一种,主要形式就是在数据末尾增加一个校验位。
8421BCD码 | 带奇校验码8421BCD码 | 带偶校验码8421BCD码 |
---|---|---|
0001 | 0001 0 | 0001 1 |
0010 | 0010 0 | 0010 1 |
0011 | 0011 1 | 0011 0 |
1000 | 1000 0 | 1000 1 |
带奇校验码就是数BCD码中1的个数,倘若为奇数则带奇校验码为0,倘若为偶数则带奇校验码为1.
带奇校验码就是数BCD码中1的个数,倘若为偶数则带偶校验码为0,倘若为奇数则带偶校验码为1.
水平校验码
8421BCD码 | 带奇校验码8421BCD码 | 带偶校验码8421BCD码 |
---|---|---|
0001 | 0001 0 | 0001 1 |
0010 | 0010 0 | 0010 1 |
0011 | 0011 1 | 0011 0 |
1000 | 1000 0 | 1000 1 |
水平校验码是指 校验码为与信息为处于水平位置关系
垂直校验码
8421BCD码 | 带奇垂直校验码8421BCD码 | 带偶垂直校验码8421BCD码 |
---|---|---|
0001 | 0 0 0 1 | 0 0 0 1 |
0010 | 0 0 1 0 | 0 0 1 0 |
0011 | 0 0 1 1 | 0 0 1 1 |
1000 | 1 0 0 0 | 1 0 0 0 |
校验码 | 0 1 1 1 | 1 0 0 0 |
垂直校验码是指 校验码为与信息为处于垂直位置关系
水平垂直校验码
8421BCD码 | 校验码8421BCD码 | 水平校验码 | 带偶校验码8421BCD码 | 水平校验码 |
---|---|---|---|---|
0001 | 0 0 0 1 | 0 | 0 0 0 1 | 1 |
0010 | 0 0 1 0 | 0 | 0 0 1 0 | 1 |
0011 | 0 0 1 1 | 1 | 0 0 1 1 | 0 |
1000 | 1 0 0 0 | 0 | 1 0 0 0 | 1 |
垂直校验码 | 0 1 1 1 | 1 0 0 0 |
水平校验码与垂直校验码的结合
海明码
本篇重磅的海明码,笔者也研究了很久,最终让我研究明白了。
海明码存在一个公式:2n=n+数据位数+1
例如:1011的海明码怎么计算?
首先确定1011的数据位数是 4位。
带入公式解得 2n=n+5
解得n = 3
即在数据位中插入 n=3 个验证位
一般验证位需要在 2i位插入。
例如n=3,则i= 0,1,2 (三个数)
即插入为h1 h2 h4位
h7 | h6 | h5 | h4 | h3 | h2 | h1 |
---|---|---|---|---|---|---|
1 | 0 | 1 | 1 |
接着转换化1,2,4为3位二进制,并将0变成通位符
1=001=xx1
2=010=x1x
4=100=1xx
将1-7转化为三位二进制,符合这三个通位符的均为h1 h2 h4的验证数据位。