2014-09-29 5 views
0

Я пытаюсь распечатать Hamming (7,4) code в C для всех возможных 4-битных сообщений. Я построил для циклов цикл между всеми возможными значениями четырех переменных, но я не уверен, как продолжить. Я пытаюсь использовать оператор XOR в C для проверки четности/четности, но я не могу выразить кодировку в программе. У меня есть следующая программа C до сих пор:Печать Хэмминга (7,4) код для всех возможных 4-битных сообщений

#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

Вместо того, чтобы зацикливаться на 4 петли в диапазоне (0-1), вы можете комбинировать это с одним циклом в диапазоне (0-15) –

ответ

1

р1 охватывает d1, d2, d4 (A, B и D в коде)
р2 охватывает d1, d3, d4
р3 охватывает d2, d3, d4.

Если биты данных d1, d2, d3, d4, код Хэмминга будет

+--+--+--+--+--+--+--+--+ 
| 0|p1|p2|d1|p3|d2|d3|d4| 
+--+--+--+--+--+--+--+--+ 

(Нет ведущего нуля не требуется, если вы вывода в двоичном)
Вы можете прочитать this tutorial к понять, как объединить несколько бит в байт, если вам это нужно.

Один намек для кодирования:

p1 = a^b^d; 
+1

Спасибо! Это помогает мне лучше понять код. Я смог реализовать его логически, но имел проблемы с созданием операторов XOR в C. – 17andLearning

+0

Кроме того, я инициализирую бит четности с некоторым значением? – 17andLearning

+0

Вам не нужно инициализировать биты четности. Вещи нужно только инициализировать, если вы используете их значение. В вашем примере вы устанавливаете p1 на значение, вычисленное из d1, d2 и d4, поэтому не имеет значения, с чего начиналось значение p1. – Vicky

Смежные вопросы