Форум программистов, компьютерный форум, киберфорум
Информатика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 04.08.2020
Сообщений: 2

Нахождение ошибок в циклическом коде

04.08.2020, 01:26. Показов 3898. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую! Не уверена, что правильно выбрала раздел для своего вопроса, но суть его в следующем:
Определить в каком разряде кодового вектора 1101011 циклического кода [7,4] имеется ошибка - так звучит задание. Я, само собой, пыталась самостоятельно разобраться, и у меня возникла загвоздка. Разобрала эту статью на хабре, посчитала для своего примера: https://habr.com/ru/post/140611/. Возник вопрос: что делать, если я не знаю, как выглядит правильно переданное сообщение? Я получила сообщение с контрольными битами из неправильного сообщения, но как понять, где ошибка? Вот 0110101011 до чего досчиталась. Я так понимаю это полученное сообщение с контрольными битами на позициях 1,2,4, но в каких из них ошибки, я не могу понять, как вычислить. Подскажите, пожалуйста, что делать дальше или может вообще я неправильно действую изначально? Заранее благодарю!
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.08.2020, 01:26
Ответы с готовыми решениями:

нахождение ошибок в коде, наследование
#include "stdafx.h" #include "conio.h" #include <iostream> using namespace std; class Complex { protected: float Re,Im;...

Изменить порядок в циклическом коде
Добрый день! Написали примитивно программу, нужно исправить, так как при нажатии на кнопку искажения, разряд считается справа-налево, а...

Нахождение кратчайшего пути в "циклическом" массиве
Добрый вечер! Я пишу простую игру (на Java). Персонаж должен убегать от гангстера. Поле это двумерный массив . Стены являются прозрачными...

2
Модератор
10451 / 5746 / 3409
Регистрация: 17.08.2012
Сообщений: 17,481
08.08.2020, 16:08
Лучший ответ Сообщение было отмечено aida1996 как решение

Решение

На хабре всё неплохо разжёвано, однако, основные термины считаются сами собой разумеющимися. Типа, "Это происходит вот так, а по какой причине именно так, Вам знать не обязательно".

[7, 4] означает, что в векторе всего 7 символов, 4 из которых информационные.

Код Хэмминга может быть классическим и усечённым.

Количество символов в классическом коде Хэмминга определяется количеством проверочных символов "r". Маркировка какого-либо кода Хэмминга определяется как

[2r-1, 2r-1-r]

Часто некоторое количество символов не используется, такие коды Хэмминга называются усечёнными.

У Вас по заданию классический код Хэмминга с r=3, поэтому [23-1, 23-1-3] = [7, 4].

На Хабре в примере использован усечённый код Хэмминга [21, 16], который получается из классического кода Хэмминга [31, 26] отсечением десяти символов.

На хабре не объясняется, по какому принципу определяется номер ошибочного символа: собственно, а почему "N через N начиная с N", а не как-то ещё?

Не мудрено, что Вы запутались. Тем не менее, ещё раз перечитайте хабр.

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

Приступим.

Проверочные символы в коде Хэмминга располагаются на позициях, кратных степени числа 2, начиная с нулевой степени, то есть, на позициях 1, 2, 4, 8, 16, 32 и так далее. Остальные символы - информационные. В Вашем случае проверочные символы стоят в позициях 1, 2 и 4.

Ваш вектор, проверочные символы обозначены красным цветом: 1101011.

Посимвольно, в виде таблицы:

Имя символаi1i2i3i4i5i6i7
Символ1101011

Вычислим синдромы (проверочные суммы по модулю 2):

https://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
S_1=i_1\oplus i_3\oplus i_5\oplus i_7=1\oplus 0\oplus 0\oplus 1=0\\\\S_2=i_2\oplus i_3\oplus i_6\oplus i_7=1\oplus 0\oplus 1\oplus 1=1\\\\S_4=i_4\oplus i_5\oplus i_6\oplus i_7=1\oplus 0\oplus 1\oplus 1=1\\\\<br />

Синдромы удобнее нумеровать по степеням двойки (то есть, 1, 2, 4, 8, 16 и т.д., а не 1, 2, 3, 4 и т.д.), поскольку (если ошибка только одна) каждый из синдромов вычисляет один из двоичных разрядов номера ошибочного символа.

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

Для каждого синдрома суммируются те символы, у которых в двоичном представлении их номеров двоичный разряд с весом, равным номеру синдрома, установлен в 1 (это то самое "N через N начиная с N", но не в виде "закономерности", а какое оно есть на самом деле).

Для Вашего случая:

В синдром номер 1 попадают символы с номерами 1, 3, 5, 7, в двоичном представлении 001, 011, 101, 111. Обратите внимание, это все те, у которых 1 в первом (младшем) разряде (пометил синим).

В синдром номер 2 попадают символы с номерами 2, 3, 6, 7, в двоичном представлении 010, 011, 110, 111. Обратите внимание, это все те, у которых 1 во втором разряде (пометил синим).

В синдром номер 4 попадают символы с номерами 4, 5, 6, 7, в двоичном представлении 100, 101, 110, 111. Обратите внимание, это все те, у которых 1 в третьем разряде (пометил синим).

Поэтому, если вектор содержит только одну ошибку, то двоичное число, составленное из синдромов, начиная со старшего (в данном случае S4S2S1=110(2)=6(10)), и будет номером ошибочного символа, поскольку распределение символов по суммам синдромов сделано по весам разрядов двоичной системы счисления. Можно (это то же самое, но в "скрытой" форме) сложить номера синдромов, в которых произошло нарушение чётности, и получить номер символа, в котором произошла ошибка: 2+4=6.

Ответ: ошибка в шестом символе, для вычисления верного сообщения нужно инвертировать шестой символ.

Исправленный вектор: 1101001.
2
0 / 0 / 0
Регистрация: 04.08.2020
Сообщений: 2
31.08.2020, 23:40  [ТС]
Большое спасибо за такой развёрнутый ответ!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.08.2020, 23:40
Помогаю со студенческими работами здесь

Нахождение ошибок
Помогите найти ошибки и переделать код (Сложение чисел) using System.Collections.Generic; using System.Text; namespace...

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

Исправление ошибок в коде
Выводит ошибки C4018 и еще пару ошибок компилятора #include &lt;iostream&gt; #include &lt;iomanip&gt; #include...

Исправление ошибок в коде
Нужно исправить все ошибки в этом коде. Заранее спасибо.

высвечивание ошибок в коде
В начале кода я ставлю следующие строки ini_set('error_reporting',E_ALL); ini_set('display_errors',1); ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru