Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Арифметические коды




 

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

Существуют два вида арифметических кодов.

Арифметическим кодом 1-го вида будем называть код А∙N, где А — контролируемое число, N — модуль. Для таких кодов несколько изменяются понятия «расстояния» и «веса».

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

Если расстояние между двумя числами A1, и А2 равно d, то это означает, что переход от одного числа к другому достигается прибавлением величины d. В этом случае все комбинации чисел, находящиеся между A1, и А2 являются запрещенными. Следовательно, для обнаружения d-кратной ошибки необходимо иметь расстояние не меньше d + 1. Если d = 1, то такой код не сможет обнаруживать ошибок. Величина расстояния для кодов А ∙ N -вида зависит от величин А и N.

Предполагается (и это доказано в теории кодирования), что для любого числа А в системе основания q = 2 существует единственное представление вида

Aq = an∙2n+an-1∙2n-1+…+a0,

где аi=±1 или 0, и в котором нет двух соседних коэффициентов, отличных от нуля.

Представление предыдущей формулы содержит минимальное число ненулевых коэффициентов и называется каноническим. В каноническом представлении вес любого числа, начиная с 2i+1 и вплоть до числа 2i +2i-1, на единицу больше, чем вес чисел от 1 до 2i-1. Вес чисел, начиная с 2i +2i-1 +1 и вплоть до 2i+1, совпадает с весом чисел 2i +2i-1 -1, 2i +2i-1 -2 и т. д.

Количество разрядов для представления числа А∙N равно log2 (А∙N) = 1оg2 А + 1оg2N, где 1оg2 N — избыточность кода. Таким образом, выбор модуля определяет не только избыточность, но и расстояние. В качестве модуля целесообразно выбирать некоторое взаимно простое с основанием системы q число, превосходящее само основание. Можно положить, что для двоичной системы N = 3, и тогда любой код вида А∙3 будет обнаруживать все одиночные ошибки. Следовательно, минимальная избыточность при произвольном основании определяется как 1оg q (q +1), т. е. всегда будет требоваться не менее одного, но и не более двух дополнительных разрядов.

Коды с минимальным расстоянием, большим двух, характеризуются величиной Мq (N,d). Величина Мq (N,d) — наименьшее число, дающее при умножении его на N число, вес которого меньше d в представлении по основанию q. Другими словами, если число N имело вес d в представлении по основанию q, то произведение q(N,d) будет иметь вес меньше d по этому же основанию q.

Если число А изменяется в пределах 0 ≤ АМq(N,d), то при любых N и q минимальное расстояние А∙N -кода будет равно по меньшей мере d, что вытекает из определения числа Мq(N, d).

В теории кодирования доказано, что

M2(N,3)=(2(N-1)/2+1)/N

Основной способ для отыскания значения Nq — способ непосредственных вычислений.

Кроме А∙N -кодов существуют арифметические коды 2-го рода с большим минимальным расстоянием. Арифметическое расстояние между числами А1 и А2 есть вес их разности, а вес, в свою очередь, определяется количеством ненулевых символов в представлении числа по основанию q. Каждое число имеет каноническую форму представления по основанию 2, т. е. минимальное количество равно 1.

Если N простое число, то 2N-1 делится на N. Пусть B = (2N-1-1)/N.

Рассмотрим В∙N -код.

Число знаков в кодовом слове п = N - 1. Возьмем некоторое число l(0≤l<A). Тогда

l∙B=bn-1∙2n-1+ bn-2∙2n-2+…+b0

где bi≡(l∙2n-1mod A) mod 2.

И действительно: N = 11, В = (1024 - 1)/11 = 93. Если l = 10, то

l ∙ B = 930 = 1∙29 + 1∙28 + 1∙27 + 0∙26 + 1∙25 + 0∙24 + 0∙23 + 0∙22 + 1∙21 + 0∙20.

Проверим коэффициенты bi по предыдущей формуле:

 

b0 ≡ (10∙210 mod 11)mod 2 ≡ 0;

b1 ≡ (10∙29 mod 11)mod 2 ≡ 1;

b2 ≡ (10∙28 mod 11)mod 2 ≡ 0;

b3 ≡ (10∙27 mod 11)mod 2 ≡ 0;

b4 ≡ (640 mod 11)mod 2 ≡ 0;

b5 ≡ (320 mod 11)mod 2 ≡ 1;

b6 ≡ (160 mod 11)mod 2 ≡ 0;

b7 ≡ (80 mod 11)mod 2 ≡ 1;

b8 ≡ (40 mod 11)mod 2 ≡ 1;

b9 ≡ (20 mod 11)mod 2 ≡ 1;

 

Итак, десятичное число 10 в двоичном представлении имеет вид 1010, в A∙ N -коде будет иметь вид 1101110, а в В∙N -коде при N = 11, В = 93 число 10 будет представлено в виде 1110100010.

При использовании В∙N -кода коэффициенты bi можно вычислять сразу же, не раскладывая числа в многочлен bi≡(l∙2n-1mod A) mod 2; п = N - 1 известно заранее, так как В = (2N-1 - 1)/N вычисляется через N.

Таким образом, при изображении числа l в В∙N -коде половина знаков равна единице, а половина — нулю. Это следует из выражения

bi≡(l∙2n-1mod N) mod 2

так как 2 и N взаимно простые числа, значит, остатки от деления чисел 2i на N — целые числа от 1 до N - 1. Так как число N — нечетное, количество остатков — всегда четное число, а значит половина из остатков числа нечетные, а половина — четные числа. Следовательно, половина остатков по mod 2 дает единицу, а половина — нуль.

Арифметический вес числа в В∙N -коде равен (N-1)/3, или (N + 1)/3 в зависимости от того, какое из этих чисел целое (N > 3).

В случае В∙N -кодов по известному N можно не только определить количество символов и их вид, но и заранее определять арифметическое расстояние, что непосредственно влияет на корректирующие способности кода.

Существуют еще самодополняющиеся (А∙N + В) коды. В этом случае код для дополнительного числа N — дополнительный код самого числа А.

Если числа, которые кодируются, имеют основание b, то дополнение для числа А будет (b - 1 - А). Дополнение же числа A∙N при представлении его по основанию q равно qn -1 - A∙N:

qn – 1 – (A∙N + B) = N(b – 1 – A) + B,

       
   


дополнение кодового числа код дополнительного числа

В = [qn – 1 – N(b – 1)]/2

Код возможен только при целых В.

Расстояния для (А ∙ N + В) кода те же, что и для А ∙ N -кода.

В современных вычислительных машинах используется контроль на четность и нечетность. Этот контроль позволяет лишь зафиксировать наличие ошибки, но не позволяет ее исправить. Но он нашел широкое применение благодаря своей простоте, так как и наличие информационной избыточности требует применения контрольной аппаратуры, которая может оказаться слишком объемной, труднореализуемой. Например, в случае самодополняющихся (A∙N + В) -кодов необходимо умножить число на N, где N — простое число, прибавить В; для представления четырехзначных чисел по величине используют восемь разрядов, помимо этого приходится осуществлять коррекцию (ввод поправок) при сложении, затем сравнение полученных комбинаций с эталонными, а далее проводить исправление ошибок, если такие имеются. Но и (A∙N + В) -коды не всегда позволяют определить точное местоположение ошибки.

Проиллюстрируем вышесказанное на примере сложения двух чисел А1 и А2.

+
A1 = 0110 0011

A2 = 0111 0110

-
1100 1001

0010 1010

1001 1111 1010 1111 — ближайшая разрешенная комбинация

несовпадение в

двух разрядах

Ошибка может быть либо в 5-м, либо в 6-м разрядах:

а) 1110 1001

0010 1010

1011 1111 — запрещенная комбинация

б) 1101 1001

0010 1010

10101111 — соответствует эталонной комбинации

Необходима специальная система для распознавания возможности пе­реноса.

+
1100 0010

0110 0011

-
1010 0101 — переноса не произошло

0010 1010

0111 1011 вся комбинация запрещенная, отличается от разрешенных

на три разряда

Если же делать коррекцию ошибки, используя сложение с перено­сом, то:

+
1100 0010

0110 0011

1010 0101

0001 0010

+
1001 0011 местоположение ошибки можно обнаружить

0010 1010

1011 1101
0011 1101

Для реализации таких корректирующих кодов нужно большое количе­ство дополнительного оборудования, что не всегда оправдано.

 




Поделиться с друзьями:


Дата добавления: 2014-01-06; Просмотров: 929; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.024 сек.