海明码计算(校验码)
前言:
海明码:
- 海明码一般只能纠1位错。
- 海明码默认进行偶校验(除非特殊说明使用奇校验)。
- 海明码是一串只由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个位置出错,如表所示是正确的
海明码计算(校验码)相关推荐
- java 社会统一信用代码分解,获取登记管理部门代码、机构类别代码、登记管理机关行政区划码、 主体标识码、校验码
问题描述: `提示:根据已有的社会统一信用编码,获取每个组成部分的内容 学习内容: 提示:这里需要说明一下,统一社会信用代码的构成 社会统一信用代码是由18位 阿拉伯数字或大写英文字母(不使用I.O. ...
- 异或校验 java_Java生成异或校验码、和校验码、CRC校验码、补码求和校验码四种校验码及校验码匹配工具类...
Java生成异或校验码.和校验码.CRC校验码.补码求和校验码四种校验码及校验码匹配工具类 /** * 报文校验码验证规则 */ public class Verification { /** * 校 ...
- 公民身份号码是一种由18位数字组成的特征组合码,其排列顺序从左至右依次为:6位数字地址码、8位数字出生日期码,3位数字顺序码和1位数字校验码(校验码若为10则用字符X来表示)。编写程序从键盘输入一个
#include <stdio.h> int main() {int add,year,month,day;/*定义地址码,年月日*/int shunxuma;/*定义顺序码*/char ...
- 【交叉二五码及其校验码计算方式】
一.交叉二五码: 交叉二五码是1972年美国Intermec公司发明的一种条.空均表示信息的连续型.非定长.具有自校验功能的双向条码.它的字符集为数字字符0~9. 交叉二五条码由左侧空白区.起始符.数 ...
- 海明校验码的计算及检验
海明校验码的计算及检验 目录 海明校验码的计算及检验 知识背景 计算海明校验码 步骤一:计算校验码位数 步骤二:确定校验组 步骤三:计算校验码的值得出海明校验码 利用海明校验码校验数据 其他 总结 最 ...
- 【计算机网络】数据链路层 : 差错控制 ( 纠错编码 | 海明码 | “海明码“ 原理 | “海明码“ 工作流程 | 确定校验啊位数 | 确定校验码和数据位置 | 求校验码值 | 检错纠错 )★
文章目录 一. "海明码" 工作原理 二. "海明码" 工作流程 三. 确定校验码位数 四. 确定校验码和数据位置 0. 确定校验码位置 1. 引入二进制位 2 ...
- 用python写海明校验码
生成海明校验码 def Input():"""输入字符串'0'与'1'的组合输出两个参数:字符串的长度,字符列表"""string = in ...
- 常用校验码(奇偶校验码、海明校验码、CRC校验码)
常用校验码(奇偶校验码.海明校验码.CRC校验码) 一.奇偶校验码 二.海明校验码 三.CRC校验码 计算机系统运行时,各个部之间要进行数据交换.交换的过程中,会有发生误码的可能(即0变成1或1变 ...
- 计算机组成原理学习笔记:海明校验码
概述 海明校验码又可以称为汉明校验码, 这只是一个音译的问题, 作者是 Richard Hamming 海明校验码对于信息纠错这个领域的贡献十分巨大,Richard Hamming 获得了1968年的 ...
- 可能是最详细的海明校验码(汉明码)解法
例题 求信息1011的海明码 第1步 求校验码位数 牢记公式:2^r >= k + r + 1 k 值:原始信息码的位数,已知 r 值:校验码的位数,根据公式求 ① 此题中,信息码为 1011 ...
最新文章
- 你知道为什么Java的main方法必须是public static void?
- linux 关闭打开的文件描述符,关闭它们后重新打开stdout和stdin文件描述符
- python画数学曲线_python学习笔记28:画函数曲线图
- teacher want middle point result rather all drafts
- ModuleNotFoundError: No module named 'mpl_toolkits.basemap'
- oracle里有limit怎么用,[ORACLE]ORACLE 实现mysql中的limit 功能
- JS对文本框输入字符的限制
- 不想写脚本清理 mongodb 中的垃圾数据,ttlIndex 能帮到你!
- 2018诺贝尔奖预测:美国11人,日本1人,中国无人入围
- [git]git的基本原理|git branch|git
- 使用Qemu模拟Cortex-A9运行U-boot和Linux
- 如何优雅地管理C++ 中的内存
- 【Flink】Flink 控制台能消费 但是 Flink 任务不能消费 内置topic 导致问题
- 关于云计算的讨论,一年就等这一回!
- 破解密码很难?利用Python自动编写暴力破解字典,***必学技能!
- mysql 高级映射_MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架...
- 明解java.pdf_明解C语言:中级篇 PDF下载
- opencv mat与cvmat, iplimage转换
- CAN网络矩阵详解,摩托罗拉(Motorala)大端序,英特尔(Intel)小端序
- Angular 入门教程系列:33:移动端统计图表F2
热门文章
- Java实现贪吃蛇(汪汪队)游戏,自定义游戏背景音乐,背景图片和游戏图标
- 鸿蒙官方编辑器 DevEco Studio 2.0.12.201使用流程
- 进入linux jed文本编辑怎么退出,尝试将 Jed 作为你的 Linux 终端文本编辑器 | Linux 中国...
- 《Python编程从入门到实践》———第一章
- 去空格 html,javascript怎么去空格?
- 3套看漫画学python视频教程
- 教你在官网如何下载jdk
- matlab 中文注释乱码问题解决
- 麦子学院3天带你学会Apple Watch开发
- 时间序列数据的特征提取