为所有可能的4位消息打印汉明(7,4)代码

时间:2014-09-29 09:23:17

标签: c

我正在尝试在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; 
}

如果有任何帮助,我将非常感激!

1 个答案:

答案 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;