c - 为所有可能的 4 位消息打印 Hamming (7,4) 代码

标签 c

我正在尝试打印 Hamming (7,4) code在 C 语言中表示所有可能的 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; 
}

如果您能提供任何帮助,我将不胜感激!

最佳答案

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;

关于c - 为所有可能的 4 位消息打印 Hamming (7,4) 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26096520/

相关文章:

c - 如何在C中解析 "expected ' ;' before ' {' token"?

C - 串行设备未接收到数据

在简单的宏扩展中混淆 gcc 错误消息

C语言字符数组三角形,字符之间用空格分隔

c - SIGINT 和 SIGQUIT

c - 如何将整数数组转换为C中的整数?

c - memcpy 而不是 copy_to_user

c - 如何可维护地确定 sizeof(struct ...)s?

c++ - 复合 if 语句使用 ? : operator in C

c - 海湾合作委员会警告 : pointer arithmetic with type void *