Algorithm 如何计算(31,26)的汉明码?

Algorithm 如何计算(31,26)的汉明码?,algorithm,networking,hamming-code,Algorithm,Networking,Hamming Code,我需要构造0x444的(31,26)汉明码 在阅读了维基百科和Geeksforgeks中显示的算法之后,我仍然无法理解这是如何工作的,因为我的构建结果与我在互联网上找到的计算器的结果不同 我的结果是:0100 0100 0010 0010或0x4422 对吗 据我了解: P1=按位异或(C1、C3、C5、C7、C9、C11、C13.C15、C17..)=0 P2=按位异或(C2、C3、C6、C7、C10、C11、C14、C15..)=1 P3=按位异或(C4、C5、C6、C7、C12、C13、C

我需要构造0x444的(31,26)汉明码

在阅读了维基百科和Geeksforgeks中显示的算法之后,我仍然无法理解这是如何工作的,因为我的构建结果与我在互联网上找到的计算器的结果不同

我的结果是:0100 0100 0010 0010或0x4422 对吗

据我了解: P1=按位异或(C1、C3、C5、C7、C9、C11、C13.C15、C17..)=0

P2=按位异或(C2、C3、C6、C7、C10、C11、C14、C15..)=1

P3=按位异或(C4、C5、C6、C7、C12、C13、C14、C15..)=0

P4=按位异或(C8、C9、C10、C11、C12、C13、C14、C15..)=0

P5=按位异或(C16,C17..)=0

还有一件事我不明白。。假设(31,26)汉明码输出一个31位的结果,其中包含5个奇偶校验位和26个数据位。。为什么(7,4)汉明码将每个4位转换为7位表示,而不仅仅是7位的1位表示和3位奇偶校验位


谢谢。

是的,假设您从右端的1开始对位进行编号,那么对于(31,26)汉明码(偶数奇偶校验码字),0x000444被编码为0x00004222

其中C1、C2等是码字的位1、2等,P1、P2等是奇偶校验位1、2等。我认为更清楚地说:

  P1 = C1 = Bitwise_XOR(C3, C5, C7, C9, ...)
以便:

  Bitwise_XOR(C1, C3, C5, C7, C9, ...) == 0
等等。这是平等的

你没有说你试过哪个“计算器”,但你看到的差异可能与你的数字来源有关。我注意到维基百科提供了:

如果要编码的数据字节为10011010,则数据字(使用u表示奇偶校验位)将为u 1_001_1010,而码字为0111100101010

这显然是从左端开始数位

很抱歉,我不明白你的第二个问题。我可以说,(31,26)汉明码确实需要26位的数据,并加上5个奇偶校验位来产生一个31位的码字。(7,4)汉明码对4位数据、3位奇偶校验位和7位码字也有同样的作用