код хемминга пример работы алгоритма

Код хемминга пример работы алгоритма

Код Хэ́мминга — наиболее известный из первых самоконтролирующихся и самокорректирующихся кодов. Построен применительно к двоичной системе счисления. Позволяет исправлять одиночную ошибку (ошибка в одном бите) и находить двойную.

Предположим, что нужно сгенерировать код Хемминга для некоторого информационного кодового слова. В качестве примера возьмём 15-битовое кодовое слово x1…x15, хотя алгоритм пригоден для кодовых слов любой длины. В приведённой ниже таблице в первой строке даны номера позиций в кодовом слове, во второй — условное обозначение битов, в третьей — значения битов.

123456789101112131415
x1x2x3x4x5x6x7x8x9x10x11x12x13x14x15
100100101110001

Вставим в информационное слово контрольные биты r0…r4 таким образом, чтобы номера их позиций представляли собой целые степени двойки: 1, 2, 4, 8, 16… Получим 20-разрядное слово с 15 информационными и 5 контрольными битами. Первоначально контрольные биты устанавливаем равными нулю. На рисунке контрольные биты выделены розовым цветом.

1234567891011121314151617181920
x1x2x3x4x5x6x7x8x9x10x11x12x13x14x15
00100010001011100001

В общем случае количество контрольных бит в кодовом слове равно двоичному логарифму числа, на единицу большего, чем количество бит кодового слова (включая контрольные биты); логарифм округляется в большую сторону. Например, информационное слово длиной 1 бит требует двух контрольных разрядов, 2-, 3- или 4-битовое информационное слово — трёх, 5…11-битовое — четырёх, 12…26-битовое — пяти и т. д.

Добавим к таблице 5 строк (по количеству контрольных битов), в которые поместим матрицу преобразования. Каждая строка будет соответствовать одному контрольному биту (нулевой контрольный бит — верхняя строка, четвёртый — нижняя), каждый столбец — одному биту кодируемого слова. В каждом столбце матрицы преобразования поместим двоичный номер этого столбца, причём порядок следования битов будет обратный — младший бит расположим в верхней строке, старший — в нижней. Например, в третьем столбце матрицы будут стоять числа 11000, что соответствует двоичной записи числа три: 00011.

1234567891011121314151617181920
x1x2x3x4x5x6x7x8x9x10x11x12x13x14x15
00100010001011100001
10101010101010101010
01100110011001100110
00011110000111100001
00000001111111100000
00000000000000011111

В правой части таблицы мы оставили пустым один столбец, в который поместим результаты вычислений контрольных битов. Вычисление контрольных битов производим следующим образом. Берём одну из строк матрицы преобразования (например, r0) и находим её скалярное произведение с кодовым словом, то есть перемножаем соответствующие биты обеих строк и находим сумму произведений. Если сумма получилась больше единицы, находим остаток от его деления на 2. Иными словами, мы подсчитываем сколько раз в кодовом слове и соответствующей строке матрицы в одинаковых позициях стоят единицы и берём это число по модулю 2.

Если описывать этот процесс в терминах матричной алгебры, то операция представляет собой перемножение матрицы преобразования на матрицу-столбец кодового слова, в результате чего получается матрица-столбец контрольных разрядов, которые нужно взять по модулю 2.

Например, для строки r0:

r0 = (1·0+0·0+1·1+0·0+1·0+0·0+1·1+0·0+1·0+0·0+1·1+0·0+1·1+0·1+1·1+0·0+1·0+0·0+1·0+0·1) mod 2 = 5 mod 2 = 1.

Полученные контрольные биты вставляем в кодовое слово вместо стоявших там ранее нулей. По аналогии находим проверочные биты в остальных строках. Кодирование по Хэммингу завершено. Полученное кодовое слово — 11110010001011110001.

1234567891011121314151617181920
x1x2x3x4x5x6x7x8x9x10x11x12x13x14x15
00100010001011100001
101010101010101010101
011001100110011001101
000111100001111000011
000000011111111000000
000000000000000111111

Алгоритм декодирования по Хэммингу абсолютно идентичен алгоритму кодирования. Матрица преобразования соответствующей размерности умножается на матрицу-столбец кодового слова и каждый элемент полученной матрицы-столбца берётся по модулю 2. Полученная матрица-столбец получила название «матрица синдромов». Легко проверить, что кодовое слово, сформированное в соответствии с алгоритмом, описанным в предыдущем разделе, всегда даёт нулевую матрицу синдромов.

Матрица синдромов становится ненулевой, если в результате ошибки (например, при передаче слова по линии связи с шумами) один из битов исходного слова изменил своё значение. Предположим для примера, что в кодовом слове, полученном в предыдущем разделе, шестой бит изменил своё значение с нуля на единицу (на рисунке обозначено красным цветом). Тогда получим следующую матрицу синдромов.

1234567891011121314151617181920
r0r1x1r2x2x3x4r3x5x6x7x8x9x10x11r4x12x13x14x15
11110110001011110001
10101010101010101010s00
01100110011001100110s11
00011110000111100001s21
00000001111111100000s30
00000000000000011111s40

Заметим, что при однократной ошибке матрица синдромов всегда представляет собой двоичную запись (младший разряд в верхней строке) номера позиции, в которой произошла ошибка. В приведённом примере матрица синдромов (01100) соответствует двоичному числу 00110 или десятичному 6, откуда следует, что ошибка произошла в шестом бите.

Источник

Кодирование с помощью кода Хэмминга

Теоретическая часть

Для этого используются k – контрольных розрядов. И так если у нас задача закодировать m двоичных разрядов, то k должно удовлетворять неравенство 2k ≥ k+m+1 или k ≥ log2(k+m+1)
Таким образом мы можем найти минимальные значения k для заданных m:
код хемминга пример работы алгоритма. 9836a62ff13a. код хемминга пример работы алгоритма фото. код хемминга пример работы алгоритма-9836a62ff13a. картинка код хемминга пример работы алгоритма. картинка 9836a62ff13a. Код Хэ́мминга — наиболее известный из первых самоконтролирующихся и самокорректирующихся кодов. Построен применительно к двоичной системе счисления. Позволяет исправлять одиночную ошибку (ошибка в одном бите) и находить двойную.
Теперь, мы можем построить самокорректирующийся код m+k разрядов. Приступим.
Запишем эти разряды и пронумеруем в двоичной системе.

код хемминга пример работы алгоритма. b15905296896. код хемминга пример работы алгоритма фото. код хемминга пример работы алгоритма-b15905296896. картинка код хемминга пример работы алгоритма. картинка b15905296896. Код Хэ́мминга — наиболее известный из первых самоконтролирующихся и самокорректирующихся кодов. Построен применительно к двоичной системе счисления. Позволяет исправлять одиночную ошибку (ошибка в одном бите) и находить двойную.

Будем считать, что разряд принадлежит n-той контрольной группе, если в двоичном представлении эго номера стоит единица в n-том разряде.

Среди m+k разрядов мы будем иметь k разрядов, которые принадлежат только одной группе (степени двойки, так как они в двоичном представлении имеют только одну единицу).

Эти k разрядов мы будем считать контрольными. Остальные m разрядов будут информационными разрядами.

код хемминга пример работы алгоритма. 53fbe881dcbe. код хемминга пример работы алгоритма фото. код хемминга пример работы алгоритма-53fbe881dcbe. картинка код хемминга пример работы алгоритма. картинка 53fbe881dcbe. Код Хэ́мминга — наиболее известный из первых самоконтролирующихся и самокорректирующихся кодов. Построен применительно к двоичной системе счисления. Позволяет исправлять одиночную ошибку (ошибка в одном бите) и находить двойную.

В информационные разряды переписываем наши исходные m разрядов.

В каждый из контрольных разрядов запишем такую цифру (0 или 1), чтоб общее количество единиц в его контрольной группе была парной. Для этого нам надо просто просуммировать по модулю два двоичных представления тех информационных разрядов, в которых стоит единица. Таким образом, мы узнаем контрольные разряды, ну и соответственно все m+k закодированных разрядов.

Пример

Давайте рассмотрим пример.

Например, нам дана последовательность 1001000. В данном случае m = 7, значит k = 4.

Запишем наши m + k разряды.

код хемминга пример работы алгоритма. 19396cddd5bc. код хемминга пример работы алгоритма фото. код хемминга пример работы алгоритма-19396cddd5bc. картинка код хемминга пример работы алгоритма. картинка 19396cddd5bc. Код Хэ́мминга — наиболее известный из первых самоконтролирующихся и самокорректирующихся кодов. Построен применительно к двоичной системе счисления. Позволяет исправлять одиночную ошибку (ошибка в одном бите) и находить двойную.
Узнаем теперь контрольные разряды:

код хемминга пример работы алгоритма. 3052646ab0d7. код хемминга пример работы алгоритма фото. код хемминга пример работы алгоритма-3052646ab0d7. картинка код хемминга пример работы алгоритма. картинка 3052646ab0d7. Код Хэ́мминга — наиболее известный из первых самоконтролирующихся и самокорректирующихся кодов. Построен применительно к двоичной системе счисления. Позволяет исправлять одиночную ошибку (ошибка в одном бите) и находить двойную.
Запишем контрольные разряды.
код хемминга пример работы алгоритма. ea388e14e038. код хемминга пример работы алгоритма фото. код хемминга пример работы алгоритма-ea388e14e038. картинка код хемминга пример работы алгоритма. картинка ea388e14e038. Код Хэ́мминга — наиболее известный из первых самоконтролирующихся и самокорректирующихся кодов. Построен применительно к двоичной системе счисления. Позволяет исправлять одиночную ошибку (ошибка в одном бите) и находить двойную.
Таким образом получаем закодированную последовательность 01100010000

Реализация

$input = «1001000» ; // задаем последовательость
$m = strlen($input); // узнаем длину

$result = Array(); // заводим массив разрядов

Источник

Light

ВНИМАНИЕ! Это разжёванная версия замечательной статьи, которая есть на хабре!
Если вам нужно лаконичное объяснение, то вам туда! Если же вы в этом ничего не понимаете и требуется пошаговое разбирательство, то милости прошу читать дальше. То есть, где вам понятнее — там и читайте. Статья на хабре не моя, но я считаю, что она шикарна!

Итак. Задача. Использовать код Хэмминга для двоичного сообщения, длина слова у которого составляет 16 бит. Исходное сообщение возьмём такое «0100010000111101». То есть в слове 16 «букв», каждая из которых может принимать значение либо «0», либо «1».

код хемминга пример работы алгоритма. 023. код хемминга пример работы алгоритма фото. код хемминга пример работы алгоритма-023. картинка код хемминга пример работы алгоритма. картинка 023. Код Хэ́мминга — наиболее известный из первых самоконтролирующихся и самокорректирующихся кодов. Построен применительно к двоичной системе счисления. Позволяет исправлять одиночную ошибку (ошибка в одном бите) и находить двойную.

Кодирование

Сначала в исходное сообщение добавляем контрольные биты и устанавливаем их в нуль.
Контрольные биты располагаются в тех номерах битов, которые равны степеням двойки (ибо алфавит двоичный).
То есть. Два в степени нуль — это единица, два в степени 1 = два, два в степени 2 = четыре, а два в степени 3 = восемь, два в степени 4 = 16
Значит контрольные биты будут находиться в «буквах»(битах) под номерами 1, 2, 4, 8 и 16.

код хемминга пример работы алгоритма. 024. код хемминга пример работы алгоритма фото. код хемминга пример работы алгоритма-024. картинка код хемминга пример работы алгоритма. картинка 024. Код Хэ́мминга — наиболее известный из первых самоконтролирующихся и самокорректирующихся кодов. Построен применительно к двоичной системе счисления. Позволяет исправлять одиночную ошибку (ошибка в одном бите) и находить двойную.

В остальные номера бит переписываем исходное сообщение.

код хемминга пример работы алгоритма. 025. код хемминга пример работы алгоритма фото. код хемминга пример работы алгоритма-025. картинка код хемминга пример работы алгоритма. картинка 025. Код Хэ́мминга — наиболее известный из первых самоконтролирующихся и самокорректирующихся кодов. Построен применительно к двоичной системе счисления. Позволяет исправлять одиночную ошибку (ошибка в одном бите) и находить двойную.

Видно, что длина «слова» из-за такой избыточности увеличилась на пять «букв». В данном случае, конечно. У вас количество дополнительных бит будет зависеть от длины исходного «слова».

Теперь нужно вычислить эти контрольные биты.
Каждый контрольный бит с номером N «контролирует» непрерывную последовательность из N битов, через каждые N битов.

Вот на картинке отмечено иксами (X), какие биты нужно использовать для вычисления первого контрольного бита (с номером «1»)

код хемминга пример работы алгоритма. 027. код хемминга пример работы алгоритма фото. код хемминга пример работы алгоритма-027. картинка код хемминга пример работы алгоритма. картинка 027. Код Хэ́мминга — наиболее известный из первых самоконтролирующихся и самокорректирующихся кодов. Построен применительно к двоичной системе счисления. Позволяет исправлять одиночную ошибку (ошибка в одном бите) и находить двойную.

Для вычисления контрольно бита нужно просто сложить все «буквы» нашего «слова», которые он контролирует, а затем принять нелёгкое решение: если сумма получилась чётная, то пишем в результате нуль, а если нечётная — единицу.

Вычисляем первый бит.
Складываем биты под номерами 3,5,7,9,11,13,15,17,19,21
Это будет 0 + 1 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 = 1 + 1 + 1 + 1 + 1 = 5
Получилось 5 (пять). Сумма нечётная (на два нацело не делится). Значит пишем в первый бит единицу:

код хемминга пример работы алгоритма. 028. код хемминга пример работы алгоритма фото. код хемминга пример работы алгоритма-028. картинка код хемминга пример работы алгоритма. картинка 028. Код Хэ́мминга — наиболее известный из первых самоконтролирующихся и самокорректирующихся кодов. Построен применительно к двоичной системе счисления. Позволяет исправлять одиночную ошибку (ошибка в одном бите) и находить двойную.

Теперь вычислим контрольный бит номер 2. Для него нужно будет найти сумму каждых двух бит следующих друг за другом непрерывно, через каждые два бита. Такие биты я тоже отметил на картинке.

код хемминга пример работы алгоритма. 029. код хемминга пример работы алгоритма фото. код хемминга пример работы алгоритма-029. картинка код хемминга пример работы алгоритма. картинка 029. Код Хэ́мминга — наиболее известный из первых самоконтролирующихся и самокорректирующихся кодов. Построен применительно к двоичной системе счисления. Позволяет исправлять одиночную ошибку (ошибка в одном бите) и находить двойную.

То есть будем теперь суммировать биты, начитая с третьего по номеру, и далее те, которые отмечены иксом (X).
Их номера 3, 6, 7, 10, 11, 14, 15, 18, 19.
Это будет 0 + 0 + 0 + 1 + 0 + 0 + 1 + 1 + 1 = 4
Четыре — число чётное, значит оставляем в нашем втором бите нуль.

код хемминга пример работы алгоритма. 030. код хемминга пример работы алгоритма фото. код хемминга пример работы алгоритма-030. картинка код хемминга пример работы алгоритма. картинка 030. Код Хэ́мминга — наиболее известный из первых самоконтролирующихся и самокорректирующихся кодов. Построен применительно к двоичной системе счисления. Позволяет исправлять одиночную ошибку (ошибка в одном бите) и находить двойную.

Переходим к вычислению третьего контрольного бита. Но это у нас он контрольный — третий. А в сообщении этот бит записан под номером 4 — четыре.

код хемминга пример работы алгоритма. 031. код хемминга пример работы алгоритма фото. код хемминга пример работы алгоритма-031. картинка код хемминга пример работы алгоритма. картинка 031. Код Хэ́мминга — наиболее известный из первых самоконтролирующихся и самокорректирующихся кодов. Построен применительно к двоичной системе счисления. Позволяет исправлять одиночную ошибку (ошибка в одном бите) и находить двойную.

Значит и использовать будем все попадающие под наше правило биты, начиная с пятого.
А это биты под номерами 5, 6, 7, 12, 13, 14, 15, 20, 21.
Складываем их: 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 = 3
В итоге у нас нечётное число, значит пишем в наш контрольный бит единицу.

код хемминга пример работы алгоритма. 032. код хемминга пример работы алгоритма фото. код хемминга пример работы алгоритма-032. картинка код хемминга пример работы алгоритма. картинка 032. Код Хэ́мминга — наиболее известный из первых самоконтролирующихся и самокорректирующихся кодов. Построен применительно к двоичной системе счисления. Позволяет исправлять одиночную ошибку (ошибка в одном бите) и находить двойную.

Осталось всего ничего — вычислить два оставшихся контрольных бита, которые под номерами 8 и 16.

В восьмом оставляем нуль потому, что в той последовательности, которую мы используем для вычисления присутствуют две единицы, дающие в сумме чётное число.

код хемминга пример работы алгоритма. 033. код хемминга пример работы алгоритма фото. код хемминга пример работы алгоритма-033. картинка код хемминга пример работы алгоритма. картинка 033. Код Хэ́мминга — наиболее известный из первых самоконтролирующихся и самокорректирующихся кодов. Построен применительно к двоичной системе счисления. Позволяет исправлять одиночную ошибку (ошибка в одном бите) и находить двойную.

А в 16-м тоже сумма бит получается чётной — оставляем нуль:

код хемминга пример работы алгоритма. 035. код хемминга пример работы алгоритма фото. код хемминга пример работы алгоритма-035. картинка код хемминга пример работы алгоритма. картинка 035. Код Хэ́мминга — наиболее известный из первых самоконтролирующихся и самокорректирующихся кодов. Построен применительно к двоичной системе счисления. Позволяет исправлять одиночную ошибку (ошибка в одном бите) и находить двойную.

В итоге мы получили слово с кодом Хэмминга, которое содержит избыточные биты (в сумме 21): «100110000100001011101».

Декодирование

А теперь представим, что к нам пришло сообщение с ошибкой. Вот оно «100110001100001011101».
Мы знаем, что в него добавлены избыточные биты по алгоритму Хемминга, и нам надо проверить, есть в нём ошибка или нет.

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

код хемминга пример работы алгоритма. 036. код хемминга пример работы алгоритма фото. код хемминга пример работы алгоритма-036. картинка код хемминга пример работы алгоритма. картинка 036. Код Хэ́мминга — наиболее известный из первых самоконтролирующихся и самокорректирующихся кодов. Построен применительно к двоичной системе счисления. Позволяет исправлять одиночную ошибку (ошибка в одном бите) и находить двойную.

В первом оставляем нуль, ибо в подконтрольных битах чётное число единиц.

код хемминга пример работы алгоритма. 038. код хемминга пример работы алгоритма фото. код хемминга пример работы алгоритма-038. картинка код хемминга пример работы алгоритма. картинка 038. Код Хэ́мминга — наиболее известный из первых самоконтролирующихся и самокорректирующихся кодов. Построен применительно к двоичной системе счисления. Позволяет исправлять одиночную ошибку (ошибка в одном бите) и находить двойную.

Вычисляем все остальные контрольные биты по описанному выше алгоритму (мне лень заново его описывать тут), и получаем, что не совпадают контрольные биты под номерами 1 и 8:

код хемминга пример работы алгоритма. 039. код хемминга пример работы алгоритма фото. код хемминга пример работы алгоритма-039. картинка код хемминга пример работы алгоритма. картинка 039. Код Хэ́мминга — наиболее известный из первых самоконтролирующихся и самокорректирующихся кодов. Построен применительно к двоичной системе счисления. Позволяет исправлять одиночную ошибку (ошибка в одном бите) и находить двойную.

Теперь складываем номера этих контрольных бит: 1 + 8, и получаем 9 — номер бита, в котором закралась ошибка! Ура! Теперь просто меняем девятый бит на обратный — с единицы на нуль, — и получаем исходное сообщение!

Отметим, что это самый простейший алгоритм Хемминга, который может исправить только одну ошибку в слове. Об остальных алгоритмах данная статья умалчивает. 🙂

Источник

Код хемминга пример работы алгоритма

Код Хэ́мминга — наиболее известный из первых самоконтролирующихся и самокорректирующихся кодов. Построен применительно к двоичной системе счисления. Позволяет исправлять одиночную ошибку (ошибка в одном бите) и находить двойную.

Предположим, что нужно сгенерировать код Хемминга для некоторого информационного кодового слова. В качестве примера возьмём 15-битовое кодовое слово x1…x15, хотя алгоритм пригоден для кодовых слов любой длины. В приведённой ниже таблице в первой строке даны номера позиций в кодовом слове, во второй — условное обозначение битов, в третьей — значения битов.

123456789101112131415
x1x2x3x4x5x6x7x8x9x10x11x12x13x14x15
100100101110001

Вставим в информационное слово контрольные биты r0…r4 таким образом, чтобы номера их позиций представляли собой целые степени двойки: 1, 2, 4, 8, 16… Получим 20-разрядное слово с 15 информационными и 5 контрольными битами. Первоначально контрольные биты устанавливаем равными нулю. На рисунке контрольные биты выделены розовым цветом.

1234567891011121314151617181920
x1x2x3x4x5x6x7x8x9x10x11x12x13x14x15
00100010001011100001

В общем случае количество контрольных бит в кодовом слове равно двоичному логарифму числа, на единицу большего, чем количество бит кодового слова (включая контрольные биты); логарифм округляется в большую сторону. Например, информационное слово длиной 1 бит требует двух контрольных разрядов, 2-, 3- или 4-битовое информационное слово — трёх, 5…11-битовое — четырёх, 12…26-битовое — пяти и т. д.

Добавим к таблице 5 строк (по количеству контрольных битов), в которые поместим матрицу преобразования. Каждая строка будет соответствовать одному контрольному биту (нулевой контрольный бит — верхняя строка, четвёртый — нижняя), каждый столбец — одному биту кодируемого слова. В каждом столбце матрицы преобразования поместим двоичный номер этого столбца, причём порядок следования битов будет обратный — младший бит расположим в верхней строке, старший — в нижней. Например, в третьем столбце матрицы будут стоять числа 11000, что соответствует двоичной записи числа три: 00011.

1234567891011121314151617181920
x1x2x3x4x5x6x7x8x9x10x11x12x13x14x15
00100010001011100001
10101010101010101010
01100110011001100110
00011110000111100001
00000001111111100000
00000000000000011111

В правой части таблицы мы оставили пустым один столбец, в который поместим результаты вычислений контрольных битов. Вычисление контрольных битов производим следующим образом. Берём одну из строк матрицы преобразования (например, r0) и находим её скалярное произведение с кодовым словом, то есть перемножаем соответствующие биты обеих строк и находим сумму произведений. Если сумма получилась больше единицы, находим остаток от его деления на 2. Иными словами, мы подсчитываем сколько раз в кодовом слове и соответствующей строке матрицы в одинаковых позициях стоят единицы и берём это число по модулю 2.

Если описывать этот процесс в терминах матричной алгебры, то операция представляет собой перемножение матрицы преобразования на матрицу-столбец кодового слова, в результате чего получается матрица-столбец контрольных разрядов, которые нужно взять по модулю 2.

Например, для строки r0:

r0 = (1·0+0·0+1·1+0·0+1·0+0·0+1·1+0·0+1·0+0·0+1·1+0·0+1·1+0·1+1·1+0·0+1·0+0·0+1·0+0·1) mod 2 = 5 mod 2 = 1.

Полученные контрольные биты вставляем в кодовое слово вместо стоявших там ранее нулей. По аналогии находим проверочные биты в остальных строках. Кодирование по Хэммингу завершено. Полученное кодовое слово — 11110010001011110001.

1234567891011121314151617181920
x1x2x3x4x5x6x7x8x9x10x11x12x13x14x15
00100010001011100001
101010101010101010101
011001100110011001101
000111100001111000011
000000011111111000000
000000000000000111111

Алгоритм декодирования по Хэммингу абсолютно идентичен алгоритму кодирования. Матрица преобразования соответствующей размерности умножается на матрицу-столбец кодового слова и каждый элемент полученной матрицы-столбца берётся по модулю 2. Полученная матрица-столбец получила название «матрица синдромов». Легко проверить, что кодовое слово, сформированное в соответствии с алгоритмом, описанным в предыдущем разделе, всегда даёт нулевую матрицу синдромов.

Матрица синдромов становится ненулевой, если в результате ошибки (например, при передаче слова по линии связи с шумами) один из битов исходного слова изменил своё значение. Предположим для примера, что в кодовом слове, полученном в предыдущем разделе, шестой бит изменил своё значение с нуля на единицу (на рисунке обозначено красным цветом). Тогда получим следующую матрицу синдромов.

1234567891011121314151617181920
r0r1x1r2x2x3x4r3x5x6x7x8x9x10x11r4x12x13x14x15
11110110001011110001
10101010101010101010s00
01100110011001100110s11
00011110000111100001s21
00000001111111100000s30
00000000000000011111s40

Заметим, что при однократной ошибке матрица синдромов всегда представляет собой двоичную запись (младший разряд в верхней строке) номера позиции, в которой произошла ошибка. В приведённом примере матрица синдромов (01100) соответствует двоичному числу 00110 или десятичному 6, откуда следует, что ошибка произошла в шестом бите.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *