Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Лидия23
0 / 0 / 0
Регистрация: 30.01.2013
Сообщений: 7
#1

Корректирующие коды - C++

30.01.2013, 19:23. Просмотров 908. Ответов 1
Метки нет (Все метки)

а). преобразовать заданное информационное слово 10101101011 из 11 двоичных цифр в двоичное слово кода Хемминга (15,11);
б). дано двоичное слово 101111001011101 кода Хемминга (15,11). Проверить, была ли допущена в этом слове одиночная ошибка. Исправить одиночную ошибку, если она есть.

Помогите, пожалуйста
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.01.2013, 19:23     Корректирующие коды
Посмотрите здесь:

Коды символов C++
Коды программ ... C++
getch и коды C++
C++ не разборчивые коды
C++ Коды исключений
Коды цифр C++
Коды Assembler в C/C++ C++
C++ короткие коды с ********
Коды символов C++
C++ Циклические коды
C++ Коды C++
C++ Коды Хэмминга С++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kastaneda
Форумчанин
Эксперт С++
4468 / 2830 / 224
Регистрация: 12.12.2009
Сообщений: 7,200
Записей в блоге: 1
Завершенные тесты: 1
31.01.2013, 16:48     Корректирующие коды #2

Не по теме:

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



Добавлено через 21 час 1 минуту
Так получилось, что сегодня тоже некогда (сессия), но немного помогу.
Цитата Сообщение от Лидия23 Посмотреть сообщение
а). преобразовать заданное информационное слово 10101101011 из 11 двоичных цифр в двоичное слово кода Хемминга (15,11);
из условия имеем
n = 15 (общее число символов)
k = 11 (число информационных символов)
m = 15 - 11 = 4 (число контрольных символов).
в коде Хэмминга контрольные символы располагаются на местах http://www.cyberforum.ru/cgi-bin/latex.cgi?{2}^{i}, где i - целое число. Т.е. для n = 15 и m = 4 имеем контрольные символы на позициях 1, 2, 4, 8
запишем наше число 10101101011
- - 1 - 0 1 0 - 1 1 0 1 0 1 1 там, где прочерк будут контрольные символы.
составим уравнения: уравнения составляются следующим образом - берутся символы начиная с http://www.cyberforum.ru/cgi-bin/latex.cgi?{2}^{i} по http://www.cyberforum.ru/cgi-bin/latex.cgi?{2}^{i} через http://www.cyberforum.ru/cgi-bin/latex.cgi?{2}^{i} (т.е. с первого по одному через один, потом со второго по два через два, далее с четвертого по четыре через четыре и т.д.).
а1 + а3 + а5 + а7 + а9 = 0
а2 + а3 + а6 + а7 + а10 + а11 + а14 + а15 = 0
а4 + а5 + а6 + а7 + а12 + а13 + а14 + а15 = 0
а8 + а9 + а10 + а11 + а12 + а13 + а14 + а15 = 0
где аN - биты нашего кода, отчет ведется слева на право и начинается с одного, а "+" означает сложение по модулю два (сумма по модулю 2 - это остаток от деления на 2)
выведем уравнения кодирования (просто переносим неизвестные символы в правую часть ур-я)
а1 = а3 + а5 + а7 + а9
а2 = а3 + а6 + а7 + а10 + а11 + а14 + а15
а4 = а5 + а6 + а7 + а12 + а13 + а14 + а15
а8 = а9 + а10 + а11 + а12 + а13 + а14 + а15

высчитаем неизвестные биты
а1 = 1 + 0 + 0 + 1 = 0
а2 = 1 + 1 + 0 + 1 + 0 + 1 + 1 = 1
а4 = 0 + 1 + 0 + 1 + 0 + 1 + 1 = 0
а8 = 1 + 1 + 0 + 1 + 0 + 1 + 1 = 1
теперь можем закодировать наше сообщение, подставив вместо прочерков подсчитанные биты
0 1 1 0 0 1 0 1 1 1 0 1 0 1 1
готово!

Цитата Сообщение от Лидия23 Посмотреть сообщение
б). дано двоичное слово 101111001011101 кода Хемминга (15,11). Проверить, была ли допущена в этом слове одиночная ошибка. Исправить одиночную ошибку, если она есть.
Код Хэмминга допускает поиск двойных ошибок либо поиск и исправление одиночной ошибки. Поверим условию задания и будем искать одиночную ошибку.
тут делается все, тоже самое, что выше, т.е. нам нужны ур-я. Они у нас уже есть
а1 + а3 + а5 + а7 + а9 = 0
а2 + а3 + а6 + а7 + а10 + а11 + а14 + а15 = 0
а4 + а5 + а6 + а7 + а12 + а13 + а14 + а15 = 0
а8 + а9 + а10 + а11 + а12 + а13 + а14 + а15 = 0
имея код 1 0 1 1 1 1 0 0 1 0 1 1 1 0 1 посчитаем ур-я
0
0
0
1
имеем синдром ошибки S = 1000 (двоичное) = 8 (десятичное), т.е. имеем ошибку в 8 разряде (в коде Хэмминга синдром ошибки указывает на номер разряда с ошибкой, при этом отчет ведется с нуля справа на лево). Исправим ошибку
1 0 1 1 1 1 1 0 1 0 1 1 1 0 1
все!

Код писать некогда, но теперь имея решенное задание думаю это уже не проблема, любой с минимальными знаниями С++ сможет это сделать.
Yandex
Объявления
31.01.2013, 16:48     Корректирующие коды
Ответ Создать тему
Опции темы

Текущее время: 11:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru