纠错码 - 海明码/汉明码
最近在看 <<计算机网络>> 看到网络传输错误是非常普遍的,所以有了差错检查和纠正,分别是检错码和纠错码
- 检错码对数据进行检验,是否有问题,有问题向发送方返回错误,可能要求重新发数据包/帧
- 纠错码对接收的数据先校验,数据有问题的话,接收方可以自行进行处理,修复
下面我们来看看纠错码的一种实现 - 汉明码
汉明码在传输的消息流中插入验证码,当计算机存储或移动数据时,可能会产生数据位错误,以侦测并更正单一比特错误。由于汉明编码简单,它们被广泛应用于内存(RAM)
标准
- 二进制表示位置时,只有一个1的位置(2的整数次幂)为校验位
10,100,1000 - 二进制表示位置时,至少有两个1的位置为数据位
根据上面两个标准,给你一个数据,你能给出拼接后的数据/帧吗
1011
数据码拼接校验码
假设校验码总数为 n ,我们可以根据上面的第一个标准拼接处来
位置 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|
位置 | n1 | n2 | 1 | n3 | 0 | 1 | 1 |
求出校验值
我们现在得到了传输的数据,可校验值是什么呢,我们需要将位置表示从整数转为二进制
位置 | 001 | 010 | 011 | 100 | 101 | 110 | 111 |
---|---|---|---|---|---|---|---|
位置 | n1 | n2 | 1 | n3 | 0 | 1 | 1 |
我们现在想求出 n3 的值,那么要对所有位置(二进制表示后)第三个为1(#1##)的值进行异或运算值为0
n3(100) xor 1(110) xor 1(111) = 0
可以得到 n3 = 1
根据此推出 n1 = 0,n2 = 1
最后的传输数据是 0111011
校验
我们假设位置 111 的值在传输过程中发生了比特反转(1–>0)
位置 | 001 | 010 | 011 | 100 | 101 | 110 | 111 |
---|---|---|---|---|---|---|---|
位置 | 0 | 1 | 1 | 1 | 0 | 1 | 0 |
其实此时我们可以用得到校验码的等式逆推出出错的数据码位置,将所有位置形如##1, #1#, 1##的数据分别异或
- ##1 : 0 (001) xor 1 (011) xor 0 (101) xor 0 (111) = 1
- #1#: 1 (010) xor 1 (011) xor 1 (110) xor 0 (111) = 1
- 1##: 1 (100) xor 0 (101) xor 1 (110) xor 0 (111) = 1
你可以发现最终结果的拼接起来就是发生比特反转的位置 111
,通过这个也能明白为什么汉明码是只能修复单个比特错误的纠错码了
纠错码 - 海明码/汉明码相关推荐
- 海明码(汉明码、Hamming Code)
目录 文章目录 目录 简介 编码 概述 示例 第1步:校验位的位置 第2步:数据位的位置 第3步:填入数据位 第4步:如何计算出校验位的值 第5步:计算出校验位的值 侦测和更正 概述 示例 第1步:检 ...
- 汉明码(海明码)计算,模板套用易懂!
汉明码(Hamming Code),是在电信领域的一种线性调试码,以发明者理查德·卫斯里·汉明的名字命名. 本文以101101100这个二进制数为例解释海明码的编码和校验方法. 首先我们要知道汉明码是 ...
- 简单理解海明码(汉明码)纠错原理
昨天想了解海明纠错码,在网上搜了几篇文章都觉得讲得有点晦涩,不过最后好歹也是理解了,就用自己的方式表述一下,本文不注重介绍海明纠错码的算法实现(一个是并不复杂,另一个我认为大多数人也不需要具体去实现主 ...
- 信息论小课堂:纠错码(海明码在信息传输编码时,通过巧妙的信道编码保证有了错误能够自动纠错。)
文章目录 引言 I 纠错 1.1 信息纠错的前提:信息冗余 1.2 发现抄写错误的方法 1.3 计算机的信息校验原理:奇偶校验 1.4 有效的纠错编码 II 案例 2.1 例子1:自身DNA的编码 2 ...
- 海明码(汉明码)详解
海明码简介 海明码是由Richard Hanming于1950年提出的,它具有一位纠错能力. 海明码的计算 设欲检测的二进制代码为n位,为使其具有纠错能力,需要添加k位检测位,组成n+k位的代码.为了 ...
- 海明码编码和校验原理与实现【转载】
海明编码与检验原由 以内存为例, 如果内存所处的电磁环境比较复杂, 或者空间环境下受到带电粒子的打击, 那么可能导致电容的充放电或者触发器的翻转(SRAM). 这样会导致存储信息的改变. 如果不校验, ...
- 易理解的海明码的编码和校验原理【转载】
海明码简单分析(方法1) 海明码(也叫汉明码)具有一位纠错能力.本文以1010110这个二进制数为例解释海明码的编码和校验方法. 编码 确定校验码的位数x 设数据有nnn位,校验码有xxx位.则校验码 ...
- 3.3.1网络原理数据链路层之差错控制(检错编码和纠错编码)->(奇偶校验码、CRC循环冗余码、海明码)(转载)
原文链接:https://blog.csdn.net/weixin_43914604/article/details/104864783 本博客为个人学习.研究或者欣赏用,如有侵权,请与我联系删除,谢 ...
- 海明码检错与纠错,经典例子讲解~
平凡也就两个字: 懒和惰; 成功也就两个字: 苦和勤; 优秀也就两个字: 你和我. 跟着我从0学习JAVA.spring全家桶和linux运维等知识,带你从懵懂少年走向人生巅峰,迎娶白富美! 关注微信 ...
- (看得懂的)海明码的编码和校验方法
转载自:http://www.cnblogs.com/scrutable/p/6052127.html 看了半天就这个看懂了.所以转载了. 海明码(也叫汉明码)具有一位纠错能力.本文以1010110这 ...
最新文章
- 王高利:Kvm虚拟化(1)__基础搭建
- Django笔记(一)
- Could not find destination factory for transport解决方法
- 前端三十四:内嵌框架
- php 验证座机,验证国内手机号与座机号的正则表达式
- 常用英雄胜率怎么刷_单排刷英雄胜率或者炸鱼方法。
- MPLS ××× 基本实验测试
- kubectl apply -f weave.yaml之后dns没有启动起来 weave-net CrashLoopBackOff
- Could not load the defaultimg image referenced from a nib in the bundle with identifier com.abc
- Dijkstra最短路径算法
- 视频教程-C++ 编写WebService服务实战-C/C++
- 针对英特尔xtu超频软件安装失败以及英伟达GeForce Experience安装程序无法继续的解决方法
- krita绘图_如何使用Krita制作动画视频
- 速读原著-TCP/IP(互联网与实现)
- set_drain_time和time类型数据介绍
- [油猴脚本] 知乎免广告
- python根据词频绘制词云的函数_根据词频生成词云(Python wordcloud实现)
- 【报告分享】快手2022年内容招商通案-磁力引擎(附下载)
- 为什么我星际争霸画面是窗口_为什么我喜欢看全球星际联盟
- 常见电脑硬件故障有哪些?如何解决?~~~显卡故障