0001+1101=1110
В обратном коде
· 7+(-3)=4
0111+1100=0100
Весовые коды.
, где Рi это вес
Вес разряда показывает, на какое число нужно умножить стоящую перед ним цифру алфавита, чтобы получить число в этой системе исчисления.
Для кодировки десятичных чисел в двоичные:
d = W3·b3 + W2·b2 + W1·b1 + W0·b0
d - десятичная цифра
W – вес данного разряда
b – двоичные цифры
В данном примере 4 двоичных цифры, а это 16 возможных разрядов. Нам надо использовать только 10, следовательно 6 избыточных.
Число вариантов кодировки:
Существуют не весовые коды, которые не подчиняются данной функции.
Самые распространенные весовые коды: 8421, 7421, 7321, 6421, 6321, 5311, 4421, 3331
8 4 2 1 – двоично-десятичный код
W3 W2 W1 W0
Пример: запишем 610 в коде 8421
610 = 8·0 + 4·1 + 2·1 + 1·0 = 01108421
610 = 01117321
610 = 01106421
610 = 01103331
Код 8421 совпадает с двоичным, если кодируем числа от 0 до 9.
Весовые коды могут быть отрицательными.
Код 8421 – дополняющий двоично-десятичный код. Его два младших разряда отрицательные (2 и 1)
910 = 11118421 = 8·1 + 4·1 – 2·1 - 1·1
Правила составления весовых кодов.
· Вес любого разряда не должен превосходить больше, чем на единицу сумму весов всех младших разрядов (предыдущих).
· Вес младшего разряда должен быть единица, иначе мы не сможем закодировать единицу.
· Вес второго разряда должен быть один или два.
· Сумма двух старших разрядов должна быть больше либо равна 6, если второй разряд двойка, или 7, если второй разряд единица.
Существуют не весовые коды.
Код 8421 часто используется на практике.
Правила сложения чисел в двоично-десятичном коде (ДДК)
Другие виды кодов.
Такой тип кодов, у которых одному числу соответствует другое число, в сумме которые дают единицу во всех разрядах.
Пример: 510 + 410 = 910
10118421 + 01008421 = 11118421
Коды 2421 и +3 это самодополняющиеся коды.
Код +3 получается из кода 8421 добавлением тройки. Это непозиционный код. Удобен для вычисления
510 = 1000+3
410 = 0111+3
010 = 0011+3
910 = 1100+3
Свойства сложения чисел в коде +3:
· Сложение происходит тетрадами, т. е. по четыре разряда
· Если при сложении есть перенос, то производится коррекция (прибавление 3)
· Если нет переноса, то производится коррекция с вычитанием тройки.
Это циклический код. Код Грея двух разрядный, у него всегда меняется один разряд. Непозиционный код.
Используется в системах передачи информации.
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
2 |
0 |
0 |
1 |
1 |
3 |
0 |
0 |
1 |
0 |
4 |
0 |
1 |
1 |
0 |
5 |
0 |
1 |
1 |
1 |
6 |
0 |
1 |
0 |
1 |
7 |
0 |
1 |
0 |
0 |
8 |
1 |
1 |
0 |
0 |
9 |
1 |
1 |
0 |
1 |
Код Грея:
Четырех разрядный код Грея:
5 разрядов из них лишь два истинные.
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
2 |
0 |
0 |
0 |
1 |
1 |
8 |
1 |
1 |
0 |
0 |
0 |
9 |
1 |
0 |
0 |
0 |
0 |
Это весовой код.
Обнаружение и исправление ошибок в кодах.
Кодовое расстояние d – минимальное число бит, которое должно быть изменено при переходе от одного числа к другому.
d=2 между точками 110 и 011
d=1 между соседними точками.
Это кодовое расстояние можно использовать как способ обнаружения ошибки.
Кратность ошибки – (dmin - 1)
Если изменилось два бита, то двукратной ошибки не обнаружить.
Дополнительные коды увеличивают d, следовательно, помогают избежать ошибки. Например, добавлением бита четности.
Пусть у нас есть число 1011, добавим бит четности, следовательно, получим - 11011 – четное число.
Ошибки при передачи информации возникают всегда.
Пример: у нас есть диск; там 16 битное кодирование, чтобы записать и считать без ошибок добавляется 6 бит, следовательно, получается 22 бита. Это код Рида – Соломона.
На практике используется бит четности по разряду и по времени, чтобы не было двукратных ошибок.
Самое оптимальное кодирование при использовании кода Хэмминга.
Рассмотрим исключающее ИЛИ.
а |
b |
|
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
Х = ab
Бит четности: Р = ABCD
Правила для построения кода Хэмминга:
m = n - r
n – общее число
m – сама информация
Р – контрольный бит. Он должен быть таким, чтобы сумма единиц с ним была четной.
С0 = Р1а3 а5 а7 а9 а11 а13 а15 = 0
С1 = Р2а3 а6 а7 а10 а11 а14 а15 = 0
С2 = Р4а5 а6 а7 а12 а13 а14 а15 = 0
С3 = Р8а9 а10 а11 а12 а13 а14 а15 = 0
Если все С = 0, то передача информации прошла без ошибок.
Если хотя бы одно из С не равно 0, то произошла ошибка.
Для обнаружения ошибки существует формула:
N = Сr-1·2r-1 + … + Cr·2r + C1·2 + C0 , где N – номер позиции где произошла ошибка.
Пример: 101012, код 8421
1 |
0 |
1 |
0 |
1 |
Х3 |
Х5 |
Х6 |
Х7 |
Х9 |
m=5, r=4, n=9
Р1Р2Х3Р4Х5Х6Х7Р8Х9
Р1=0, Р2=0
Р4=010=1
Р8=1
001110101Хэм
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.