前言:

海明码:

  1. 海明码一般只能纠1位错。
  2. 海明码默认进行偶校验(除非特殊说明使用奇校验)。
  3. 海明码是一串只由0和1组成的序列

奇偶校验

奇校验:一串由0和1组成的序列中1的个数如果为偶数则在前面加个1,使1的个数变成奇数,否则加0。
偶校验:一串由0和1组成的序列中1的个数如果为奇数则在前面加个1,使1的个数变成偶数,否则加0。

例:

1111 奇校验就是 11111 偶校验就是 01111
1110 奇校验就是 01110 偶校验就是 11110

计算:

计算   1011  的海明码

一、计算校验位的个数

公式:2^r >= m + r + 1

(理解:在只出错一位的情况下,且出错只为0或1之间的出错,所以,2^r表示r位校验码最大可以校验的总位数,m+r意思为整个码中可能出错的次数,1为唯一正确的一次,所以2^r 要>= m + r + 1)

r:校验位的个数

m:信息位的个数  1011的信息位个数为:4

所以r最小为3,即校验位的个数为3

死记硬背:

二、分组

确定校验位在海明码中的位置

校验码只出现在第2的r次方位置上,这里用P表示

位置的二进制 111 110 101 100 011 010 001
位置 L7 L6 L5 L4 L3 L2 L1
序列 1 0 1 P3 1 P2 P1

分组:对P进行按进制位分组

先从P1开始,P1位置二进制中的最后一位是1(不看0),所以将所有位置二进制中最后一位为1的分为一组

即:
L1,L3,L5,L7

以此类推

L1,L3,L5,L7        将对应位置的序列值替换        P1,1,1,1

L2,L3,L6,L7     =====================》   P2,1,0,1

L4,L5,L6,L7                                                        P3,1,0,1

校验码计算:

偶校验:一串由0和1组成的序列中1的个数如果为奇数则在前面加个1,使1的个数变成偶数,否则加0。

第一组中1的个数是3,为奇数,所以P1应为1,保证1的个数为偶数,同理P2=0,P3=0

将P带回序列得到偶校验码为 1010101

奇校验:一串由0和1组成的序列中1的个数如果为偶数则在前面加个1,使1的个数变成奇数,否则加0。

第一组中1的个数是3,为奇数,所以P1应为0,保证1的个数为奇数,同理P2=1,P3=1

将P带回序列得到奇校验码为 1011110

纠错:

假如传输过程中将1011传成了 1001

按照偶校验纠错:校验位P的值刚刚已经计算出P1=1,P2=0,P3=0

位置的二进制 111 110 101 100 011 010 001
位置 L7 L6 L5 L4 L3 L2 L1
序列 1 0 0 0 1 0 1

按照上方的方法进行分组

根据纠错位E进行判断错误的位置

E1,L1,L3,L5,L7        将对应位置的序列值替换       E1,1,1,0,1

E2,L2,L3,L6,L7     =====================》  E2,0,1,0,1

E3,L4,L5,L6,L7                                                       E3,0,0,0,1

根据偶校验得出E1=1,E2=0,E3=1,按照E3E2E1的顺序合并得到101,101为10进制的5,所以第5个位置出错,如表所示是正确的

海明码计算(校验码)相关推荐

  1. java 社会统一信用代码分解,获取登记管理部门代码、机构类别代码、登记管理机关行政区划码、 主体标识码、校验码

    问题描述: `提示:根据已有的社会统一信用编码,获取每个组成部分的内容 学习内容: 提示:这里需要说明一下,统一社会信用代码的构成 社会统一信用代码是由18位 阿拉伯数字或大写英文字母(不使用I.O. ...

  2. 异或校验 java_Java生成异或校验码、和校验码、CRC校验码、补码求和校验码四种校验码及校验码匹配工具类...

    Java生成异或校验码.和校验码.CRC校验码.补码求和校验码四种校验码及校验码匹配工具类 /** * 报文校验码验证规则 */ public class Verification { /** * 校 ...

  3. 公民身份号码是一种由18位数字组成的特征组合码,其排列顺序从左至右依次为:6位数字地址码、8位数字出生日期码,3位数字顺序码和1位数字校验码(校验码若为10则用字符X来表示)。编写程序从键盘输入一个

    #include <stdio.h> int main() {int add,year,month,day;/*定义地址码,年月日*/int shunxuma;/*定义顺序码*/char ...

  4. 【交叉二五码及其校验码计算方式】

    一.交叉二五码: 交叉二五码是1972年美国Intermec公司发明的一种条.空均表示信息的连续型.非定长.具有自校验功能的双向条码.它的字符集为数字字符0~9. 交叉二五条码由左侧空白区.起始符.数 ...

  5. 海明校验码的计算及检验

    海明校验码的计算及检验 目录 海明校验码的计算及检验 知识背景 计算海明校验码 步骤一:计算校验码位数 步骤二:确定校验组 步骤三:计算校验码的值得出海明校验码 利用海明校验码校验数据 其他 总结 最 ...

  6. 【计算机网络】数据链路层 : 差错控制 ( 纠错编码 | 海明码 | “海明码“ 原理 | “海明码“ 工作流程 | 确定校验啊位数 | 确定校验码和数据位置 | 求校验码值 | 检错纠错 )★

    文章目录 一. "海明码" 工作原理 二. "海明码" 工作流程 三. 确定校验码位数 四. 确定校验码和数据位置 0. 确定校验码位置 1. 引入二进制位 2 ...

  7. 用python写海明校验码

    生成海明校验码 def Input():"""输入字符串'0'与'1'的组合输出两个参数:字符串的长度,字符列表"""string = in ...

  8. 常用校验码(奇偶校验码、海明校验码、CRC校验码)

    常用校验码(奇偶校验码.海明校验码.CRC校验码) 一.奇偶校验码 二.海明校验码 三.CRC校验码   计算机系统运行时,各个部之间要进行数据交换.交换的过程中,会有发生误码的可能(即0变成1或1变 ...

  9. 计算机组成原理学习笔记:海明校验码

    概述 海明校验码又可以称为汉明校验码, 这只是一个音译的问题, 作者是 Richard Hamming 海明校验码对于信息纠错这个领域的贡献十分巨大,Richard Hamming 获得了1968年的 ...

  10. 可能是最详细的海明校验码(汉明码)解法

    例题 求信息1011的海明码 第1步 求校验码位数 牢记公式:2^r >= k + r + 1 k 值:原始信息码的位数,已知 r 值:校验码的位数,根据公式求 ① 此题中,信息码为 1011 ...

最新文章

  1. 你知道为什么Java的main方法必须是public static void?
  2. linux 关闭打开的文件描述符,关闭它们后重新打开stdout和stdin文件描述符
  3. python画数学曲线_python学习笔记28:画函数曲线图
  4. teacher want middle point result rather all drafts
  5. ModuleNotFoundError: No module named 'mpl_toolkits.basemap'
  6. oracle里有limit怎么用,[ORACLE]ORACLE 实现mysql中的limit 功能
  7. JS对文本框输入字符的限制
  8. 不想写脚本清理 mongodb 中的垃圾数据,ttlIndex 能帮到你!
  9. 2018诺贝尔奖预测:美国11人,日本1人,中国无人入围
  10. [git]git的基本原理|git branch|git
  11. 使用Qemu模拟Cortex-A9运行U-boot和Linux
  12. 如何优雅地管理C++ 中的内存
  13. 【Flink】Flink 控制台能消费 但是 Flink 任务不能消费 内置topic 导致问题
  14. 关于云计算的讨论,一年就等这一回!
  15. 破解密码很难?利用Python自动编写暴力破解字典,***必学技能!
  16. mysql 高级映射_MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架...
  17. 明解java.pdf_明解C语言:中级篇 PDF下载
  18. opencv mat与cvmat, iplimage转换
  19. CAN网络矩阵详解,摩托罗拉(Motorala)大端序,英特尔(Intel)小端序
  20. Angular 入门教程系列:33:移动端统计图表F2

热门文章

  1. Java实现贪吃蛇(汪汪队)游戏,自定义游戏背景音乐,背景图片和游戏图标
  2. 鸿蒙官方编辑器 DevEco Studio 2.0.12.201使用流程
  3. 进入linux jed文本编辑怎么退出,尝试将 Jed 作为你的 Linux 终端文本编辑器 | Linux 中国...
  4. 《Python编程从入门到实践》———第一章
  5. 去空格 html,javascript怎么去空格?
  6. 3套看漫画学python视频教程
  7. 教你在官网如何下载jdk
  8. matlab 中文注释乱码问题解决
  9. 麦子学院3天带你学会Apple Watch开发
  10. 时间序列数据的特征提取