我正在尝试在C中打印Hamming (7,4) code以获取所有可能的4位消息。我已经构建了for循环来在四个变量的所有可能值之间循环,但我不确定如何继续。我试图在C中使用XOR运算符来检查奇数/偶数奇偶校验,但我无法在程序中表达编码。到目前为止,我有以下C程序:
#include <stdio.h>
int main() {
int a,b,c,d;
int result;
int p1,p2,p3;
printf(" A B C D| OUT \n");
printf("------------|-----\n");
/* cycle through all input bit combinations */
for ( a = 0; a <= 1; a = a + 1 )
{
for ( b = 0; b <= 1; b = b + 1 ) {
for ( c = 0; c <= 1; c = c + 1 ) {
for ( d = 0; d <= 1; d = d + 1 ) {
//unsure of how to compute p1, p2, p3 to print the Hamming (7,4) code
}
}
}
}
return 0;
}
如果有任何帮助,我将非常感激!
答案 0 :(得分:1)
p1涵盖d1,d2,d4(代码中的a,b和d)
p2涵盖d1,d3,d4
p3涵盖d2,d3,d4。
如果数据位是d1,d2,d3,d4,则汉明码将是
+--+--+--+--+--+--+--+--+
| 0|p1|p2|d1|p3|d2|d3|d4|
+--+--+--+--+--+--+--+--+
(如果以二进制输出则不需要前导零)
您可以阅读this tutorial以了解如何在需要时将多个位组合成一个字节。
编码的一个提示:
p1 = a ^ b ^ d;