首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >汉明码和奇偶控制之间有什么关系吗?

汉明码和奇偶控制之间有什么关系吗?
EN

Stack Overflow用户
提问于 2015-12-18 16:22:19
回答 1查看 150关注 0票数 0

我需要用一些噪音在线路上传输数据。每个传输包只有一个字节(8位)。我需要接收器能够捕获错误(并且可以选择地纠正其中的一些错误--但这并不是必要的,因为我可以在错误的情况下重复传输)。

现在我知道两种选择:

  1. 汉明码(传输的12位数据中有8位)。非常好的性能(单次校正和双检测),但很难实现(或者这并不难,但我并不真正理解代码的思想)和33%的低速度(50%的冗余)。
  2. 奇偶控制很容易实现。但是不太可靠:只会检测到一个错误(没有更正,双重错误会导致数据传输失败)。

所以,可能有比奇偶控制更可靠的中间编码算法,但比Hamming码更容易实现?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-20 15:28:10

好的,下面是一些您可以做的事情:

取任意2位(或字节,只需理解大多数语言支持字节运算符远多于位运算符),xor它们在一起.这是你的验证码。

所以你有:

代码语言:javascript
复制
xor (^) table
_________________________
  | 0 | 1 
0 | 0 | 1
1 | 1 | 0

所以某种代码:

代码语言:javascript
复制
byteA = 0x3d;
byteB = 0x47;

verificationCode = byteA ^ byteB;

然后你把这三个字节发送到电线上,你可以用它们来检测传输故障.

这不是汉明码,这是一个简单的检测方法.

hamming代码工作在小字节,半字节:

想象一下这样的类型:

代码语言:javascript
复制
bit a = 1;
bit b = 0;
bit c = 1;
bit d = 1;

bit p1 = (a + b + d) % 2;
bit p2 = (a + c + d) % 2;
bit p3 = (b + c + d) % 2;

然后,你把这些碎片和碎片混在一起,放在电线上:

如果存在p1,p2,a,p3,b,c,d,p4

因此,如果在另一边计算奇偶校验码:

如果一位被翻转,那么您可以恢复:

(假设所有未指定的奇偶校验位都正确)

  • 如果a是off,那么p1和p2就错了,
  • 如果b关闭,那么p1就错了,
  • 如果c是off,那么p2和p3就错了,
  • 如果d关闭,那么p1、p2和p3就错了.

如果不是这样的话.如果有2位或更多位错误,你必须重传.

您还可以通过使用第4奇偶校验位来添加一些验证,这也方便地适合于8位字节.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34359841

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档