1. 海明校验码检错采用的是分组交叉奇偶校验法。
     将编码中的数据位分成r个校验组,组内采取奇偶校验,每组一个校验位,可构成r位检错码。r>1
     全部检错码为0表示数据正常,不为零时检错码的值表示编码中出错数据位。

2. 编码方式:每一数据位至少参加2个校验组,一位出错,可引起多个检错码的变化。
    •设海明码 N 位,其中数据位 k 位,校验位 r 位
    •校验位 r 位表示共 r 个校验组
    •N=k+r≤2r-1
    例如我们课上讲的(4,3)编码:4个数据位,3个校验位。其编码如下
           H7 H6 H5 H4 H3 H2 H1
           D4 D3 D2 P3 D1 P2 P1
    包含G3 G2 G1个校验组,P3 P2 P1分属其中一组:
    其中 P1=D1⊕D2⊕D4      P2=D1⊕D3⊕D4      P3=D2⊕D3⊕D4
      G1=P1⊕D1⊕D2⊕D4     G2=P2⊕D1⊕D3⊕D4     G3=P3⊕D2⊕D3⊕D4
   对应的位数: G1(P1,H3,H5,H7) G2(P2,H3,H6,H7) G3(P3,H5,H6,H7)
   然后根据G3G2G1就可以判断出错位。(只能检验纠正一位出错位)

不过貌似老师也没讲具体标志位的位置是怎么确定的,下面是我找到的一些资料:

3. 码字(Code Word) 按如下方法构建:
  (1)、把所有2的幂次方的数据位标记为奇偶校验位(编号为1, 2, 4, 8, 16, 32, 64等的位置)
  –(4,3)编码中的P1,P2,P3存放的位置H1,H2,H4
  (2)、其他数据位用于待编码数据. (编号为3, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 17等的位置)
  –(4,3)编码中的D1-D4
  (3)、每个奇偶校验位的值代表了代码字中部分数据位的奇偶性,其所在位置决定了要校验和跳过的比特位顺序。
    位置1:校验1位,跳过1位,校验1位,跳过1位(1,3,5,7,9,11,13,15,…)
    位置2:校验2位,跳过2位,校验2位,跳过2位 (2,3,6,7,10,11,14,15,…)
    位置4:校验4位,跳过4位,校验4位,跳过4位 (4,5,6,7,12,13,14,15,20,21,22,23,…)
    位置8:校验8位,跳过8位,校验8位,跳过8位(8-15,24-31,40-47,…)
  –(4,3)编码中P1=D1⊕D2⊕D4(H1,H3,H5,H7) P2=D1⊕D3⊕D4 P3=D2⊕D3⊕D4

4. 采用偶校验,如果全部校验的位置中有奇数个1,把该奇偶校验位置为1;
  如果全部校验的位置中有偶数个1,把该奇偶校验位置为0.

5. 小例子:待传送数据(一个字节):10011010
  构造海明码, 对应的校验位留空 _ _ 1 _ 0 0 1 _ 1 0 1 0
  然后计算每个校验位的奇偶性 :
  P1检验1,3,5,7,9,11位,发现有偶数个1(自己数数看),所以P1=0;
  P2检验2,3,6,7,10,11位,发现有奇数个1,所以P2 =1;
  P3检验4,5,6,7,12位,发现有奇数个1,所以P3 =1;
  P4检验8,9,10,11,12位,发现有偶数个1,所以P4 =0;
  因此最后的编码为: 011100101010.
  假定实际接收到的数据 011100101110. 则第10 位出错。

---------------------------------------------------------------------------------

Hamming Codes的更多相关文章

  1. 洛谷P1461 海明码 Hamming Codes

    P1461 海明码 Hamming Codes 98通过 120提交 题目提供者该用户不存在 标签USACO 难度普及/提高- 提交  讨论  题解 最新讨论 暂时没有讨论 题目描述 给出 N,B 和 ...

  2. USACO 2.1 Hamming Codes

    Hamming CodesRob Kolstad Given N, B, and D: Find a set of N codewords (1 <= N <= 64), each of ...

  3. 洛谷 P1461 海明码 Hamming Codes

    P1461 海明码 Hamming Codes 题目描述 给出 N,B 和 D,要求找出 N 个由0或1组成的编码(1 <= N <= 64),每个编码有 B 位(1 <= B &l ...

  4. 【USACO 2.1】Hamming Codes

    /* TASK: hamming LANG: C++ URL:http://train.usaco.org/usacoprob2?a=5FomsUyB0cP&S=hamming SOLVE: ...

  5. USACO Section 2.1: Hamming Codes

    挺简单的一道题 /* ID: yingzho1 LANG: C++ TASK: hamming */ #include <iostream> #include <fstream> ...

  6. USACO Hamming Codes DFS 构造

    我还是用了很朴素的暴力匹配A了这题,不得不感叹USACO时间放的好宽... /* ID: wushuai2 PROG: hamming LANG: C++ */ //#pragma comment(l ...

  7. P1461 海明码 Hamming Codes

    题目描述 给出 N,B 和 D,要求找出 N 个由0或1组成的编码(1 <= N <= 64),每个编码有 B 位(1 <= B <= 8),使得两两编码之间至少有 D 个单位 ...

  8. USACO Section2.1 Hamming Codes 解题报告 【icedream61】

    hamming解题报告----------------------------------------------------------------------------------------- ...

  9. USACO Hamming Codes

    题目大意:求n个两两hamming距离大于等于d的序列,每个元素是一个b bit的数 思路:仍然暴力大法好 /*{ ID:a4298442 PROB:hamming LANG:C++ } */ #in ...

  10. USACO2.1 Hamming Codes【枚举+二进制处理+输出格式+题意理解】

    这道题加了2个看起来奇奇怪怪的$tag$ 1.输出格式:不得不说这个格式输出很恶心,很像$UVA$的风格,细节稍微处理不好就会出错. 因为这个还$WA$了一次: ,m=n; ) { ;i<=t+ ...

随机推荐

  1. 小记:使用SharedPreferences存储来设置程序第一次进入欢迎界面,以后不会再进入欢迎界面。

    SharedPreferences mSharedPreferences = this.getSharedPreferences(NAME, this.MODE_PRIVATE); boolean f ...

  2. 互斥锁pthread_mutex_t的使用(转载)

    1. 互斥锁创建        有两种方法创建互斥锁,静态方式和动态方式.POSIX定义了一个宏PTHREAD_MUTEX_INITIALIZER来静态初始化互斥锁,方法如下: pthread_mut ...

  3. Python背景色与语法高亮主题配置

    使用python idle的人恐怕都无法忍受默认的白色背景,及其语法高亮主题. 大家更倾向于使用黑色背景. 用户目录 的.idlerc 目录: 下面的各个系统下对应的该文件的位置: 在Linux系列系 ...

  4. C# 正则表达式 验证:数字、带小数点数字、电话和手机

    一.带小数点数字 public static bool IsNumber(string input) { string pattern = "^-?\\d+$|^(-?\\d+)(\\.\\ ...

  5. powershell玩转xml之20问

    powershell玩转xml之20问 powershell 传教士 原创文章 2014-01-30,2015-10-27改 允许转载,但必须保留名字和出处,否则追究法律责任 问:xml文件编码情况如 ...

  6. 集成自动化的条形码功能到internet应用程序,网站或自定义Java应用程序的条码控件Java Barcode Package

    Java Barcode Package控件是一款条码生成控件,包含所有的JavaBean,Applets,Servlets和类库可以使用于装有Java虚拟机的任何平台,包括Windows®, Lin ...

  7. 【转】CentOS yum安装和卸载软件的使用方法

    在CentOS yum安装和卸载软件的使用方法安装方法安装一个软件时.   CentOS yum -y install httpd安装多个相类似的软件时   CentOS yum -y install ...

  8. js和C#中的编码和解码

    同一个字符串,用URL编码和HTML编码,结果是完全不同的. JS中的URL编码和解码.对 ASCII 字母和数字及以下特殊字符无效: - _ . ! ~ * ' ( ) ,/?:@&=+$# ...

  9. Coudera-Manager/CDH的安装和部署

    由于之前部署的集群采用的是用apache hadoop的方式来实现,但是考虑到运维的成本问题,下面将apache hadoop转换成cloudera cdh.下面主要讲解一下cloudera cdh的 ...

  10. XCode之entitlement

    entitlement是codesign的一个输入,参见:codesign. entitlement的意思是权力,也就是表明应用所具有的权利,可以访问什么,不能访问什么等.这些信息会在codesign ...