networking - 此错误纠正方法的正确名称是什么(类似于汉明代码)

标签 networking error-handling network-protocols error-correction forwarderrorcorrection

此错误纠正方法的正确名称是什么?
它与汉明代码非常相似,但更为简单。我也无法在文献中找到它。我现在可以找到的唯一描述此方法的互联网资源是:

http://www.mathcs.emory.edu/~cheung/Courses/455/Syllabus/2-physical/errors-Hamming.html

还有德语维基百科。

http://de.wikipedia.org/w/index.php?title=Fehlerkorrekturverfahren

在Wikipedia文章中,该方法称为Hamming-ECC方法。但是我不确定100%,这是正确的。

这是一个示例,描述了该方法的工作方式。

Payload: 10011010

步骤1:确定奇偶校验位位置。 2的幂(1、2、4、8、16等)位是奇偶校验位:
Position:               1 2 3 4 5 6 7 8 9 10 11 12
Data to be transmitted: ? ? 1 ? 0 0 1 ? 1  0  1  0

步骤2:计算奇偶校验位值。传输中的每个位位置都分配有一个位置号。在此示例中,位置号是4位数字,因为我们有4个奇偶校验位。计算这些位置的值的XOR(4位格式),其中有效载荷为传输中的1位:
    0011 Position 3
    0111 Position 7
    1001 Position 9
XOR 1011 Position 11
--------------------
    0110 = parity bit values

步骤3:将奇偶校验位值插入传输中:
Position:               1 2 3 4 5 6 7 8 9 10 11 12
Data to be transmitted: 0 1 1 1 0 0 1 0 1  0  1  0

如果收到的消息是否正确传输并且可以纠正单位错误,验证起来非常简单。这是一个例子。接收器计算所计算和接收的有效载荷位的XOR,其中该值为1位。结果为0,表示传输无错误。否则结果将包含错误值的位的位置。
Received message: 0001101100101101

Position:      1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Received data: 0 0 0 1 1 0 1 1 0 0  1  0  1  1  0  1
Parity bits:   X X   X       X                     X


    00101 Position 5
    00111 Position 7
    01011 Position 11
    01101 Position 13
XOR 01110 Position 14
--------------------
    01010 Parity bits calculated
XOR 00111 Parity bits received
--------------------
    01101 => Bit 13 ist defective!

我希望这里的任何人都知道该方法的正确名称。

谢谢你的帮助。

最佳答案

这看起来像是Hamming(15,11)编码和解码算法的复杂实现。

将奇偶校验位与信息位交织不会改变代码的行为(或性能)。您的描述仅使用8个信息位,其中,即使正在传输11个信息位,Hamming(15,11)也会纠正所有单个位错误。

您的描述没有解释发送的12位消息如何在接收端扩展为16位消息。

关于networking - 此错误纠正方法的正确名称是什么(类似于汉明代码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28130545/

相关文章:

java - 如何检测远程侧套接字关闭?

c++ - LAN 上的计算机无法使用 boost::asio C++ 始终接收到 255.255.255.255 的 UDP 广播

r - lapply 的错误处理——输出失败元素的索引

sockets - 如何告诉 TCP 服务器特定消息已经结束?

networking - 我在哪里可以找到 bittorrent dht bootstrap 节点的列表?

c++ - 如何在 C++ 中的一个应用程序中同时使用 TCP 和 UDP

iphone - 如何避免两次握手服务器客户端/客户端服务器连接

java - 由于堆栈溢出,C 中通常会发生什么?

python - 强制发生错误时无法打印 except 语句

network-protocols - 面向消息的协议(protocol)和面向流的协议(protocol)之间的区别