Как рассчитать код Хэмминга (31,26)? - PullRequest
0 голосов
/ 09 апреля 2020

Мне нужно построить код Хемминга (31,26) 0x444.

После прочтения Википедии и алгоритма, показанного в GeeksForGeeks, я все еще не могу понять, как это работает, поскольку моя конструкция в итоге отличалась от Я нашел результат калькулятора в inte rnet.

Мой результат: 0100 0100 0010 0010 или 0x4422 это правильно?

Как я понимаю: P1 = Побитовый XOR (C1, C3, C5, C7, C9, C11, C13.C15, C17 ..) = 0

P2 = побитовый XOR (C2, C3, C6, C7, C10, C11, C14, C15 ..) = 1

P3 = битовое XOR (C4, C5, C6, C7, C12, C13, C14, C15 ..) = 0

P4 = битовое XOR (C8, C9, C10, C11 , C12, C13, C14, C15 ..) = 0

P5 = Побитовый XOR (C16, C17 ..) = 0

Еще одна вещь, которую я не могу понять ... if (31 26) код Хэмминга должен выводить 31-битный результат с 5 битами четности и 26 битами данных. Почему (7,4) код Хэмминга преобразует каждый 4 бита в 7-битное представление, а не только в 1 представление 7 бит с 3 битами четности?

Спасибо.

1 Ответ

0 голосов
/ 10 апреля 2020

Да, если вы нумеруете биты от 1 на правом конце, то 0x000444 кодируется как 0x00004422 для (31,26) кода Хэмминга - для кодового слова четной четности.

Где C1, C2, et c - биты 1, 2, et c кодового слова, а P1, P2, et c - биты четности 1, 2, et c. Я думаю, что яснее сказать, что:

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

так что:

  Bitwise_XOR(C1, C3, C5, C7, C9, ...) == 0

и так далее. Это даже паритет.

Вы не говорите, какой "калькулятор" вы пробовали, но возможно, что расхождение, которое вы видите, связано с тем, с какой стороны вы набрали номер. Я отмечаю, что Википедия дает:

Если байт данных для кодирования равен 10011010, то слово данных (использующее _ для представления битов четности) будет __1_001_1010, а кодовое слово - 011100101010.

, который четко подсчитывает биты с левого конца.

Сожалею, что не понимаю вашего второго вопроса. Я могу сказать, что код Хэмминга (31, 26) действительно принимает 26 бит данных и добавляет 5 битов четности, чтобы получить кодовое слово 31 бит. И что (7,4) код Хэмминга также действует для 4 битов данных, 3 битов четности и 7-битового кодового слова.

...