Слайд 1Троицкий Д.И. Информатика САПР 1 семестр
Кодирование чисел.
Код Хэмминга
Лекция 6
Кафедра «Автоматизированные станочные
системы»
Dept. of Automated Manufacturing Systems
Слайд 2Троицкий Д.И. Информатика САПР 1 семестр
Коды: прямой, обратный, дополнительный, модифицированный
Одним из
способов выполнения операции вычитания является замена знака вычитаемого на противоположный и прибавление его к уменьшаемому:
A – B = A + (–B).
Этим операцию арифметического вычитания заменяют операцией алгебраического сложения. Последняя и становится основной операцией.
Для машинного представления отрицательных чисел используют коды:
прямой,
обратный,
дополнительный,
модифицированный.
Слайд 3Троицкий Д.И. Информатика САПР 1 семестр
Коды: прямой, обратный, дополнительный, модифицированный
Прямой код
обычно используется при хранении чисел в запоминающем устройстве, а обратный и дополнительный коды — при выполнении над числами арифметических и некоторых других операций. При пересылках из запоминающего устройства в арифметическое и обратно числа перекодируются.
Все три кода состоят из кода знака (число отведённых разрядов l), кода целой части (m) и кода дробной части (n) числа. Сумма d =l+т+n называется длиной кода. Как правило l, т и n фиксированы. В случае целых чисел n=0, для правильных дробей обычно т=0, когда все числа одного знака, l=0.
Для положительных чисел код знака обозначается последовательностью нулей, для отрицательных — последовательностью единиц. Для положительных чисел прямой, обратный и дополнительный коды совпадают.
Слайд 4Троицкий Д.И. Информатика САПР 1 семестр
Прямой код числа
При кодировании прямым n-разрядным
двоичным кодом один разряд (как правило, самый старший) отводится для знака числа. Остальные n-1 разрядов - для значащих цифр. Значение знакового разряда равно 0 для положительных чисел, 1 - для отрицательных.
Пример: 1 = 0000 0001, -1 = 1000 0001.
Таким образом, прямой код положительного числа совпадает с самим числом, а прямой код отрицательного числа отличается от самого числа единицей в старшем разряде.
Слайд 5Троицкий Д.И. Информатика САПР 1 семестр
Обратный код числа
Обратный код строится только
для отрицательного числа. Обратный код двоичного числа является инверсным изображением самого числа, в котором все разряды исходного числа принимают инверсное значение.
Пример: А1 = 0,11010; [А1]обр = 011010 (без изменений);
А2 = -0,11010; [А2]обр = 100101.
Обратный код двоичного числа является дополнением модуля числа до наибольшего числа без знака, умещающегося в разрядную сетку, т.е. до величины 1,111…1.
Пример:
+1210=11002=0_1100(прямой)=0_0011(обратный)
-15.2510=-1111.012=1_1111.01(прямой)=1_0000.10(обр.)
Слайд 6Троицкий Д.И. Информатика САПР 1 семестр
Дополнительный код числа
Дополнительный код строится только
для отрицательного числа. Использование прямого кода усложняет структуру компьютера. В этом случае операция сложения двух чисел, имеющих разные знаки, должна быть заменена на операцию вычитания меньшей величины из большей и присвоения результату знака большей величины. Введение дополнительного кода позволяет заменить вычитание на обычное сложение, что упрощает устройство процессора.
Слайд 7Троицкий Д.И. Информатика САПР 1 семестр
Дополнительный код числа
На примере десятичного вычитания
двухразрядных чисел
предположим, что надо выполнить вычитание 84-32 /результат 52/. Дополним 32 до 100 /это «дополнение» равно 68/. Затем выполним сложение 84+68 /результат 152/. Единица «уходит», потому что рассматриваются двухразрядные десятичные числа.
Таким образом дополнительный код является математическим дополнением до основания системы счисления.
Слайд 8Троицкий Д.И. Информатика САПР 1 семестр
Дополнительный код числа
Дополнительный код отрицательного числа
отличается от обратного кода тем, что после замены цифр производится сложение результата с d-paзрядным числом, все разряды которого, кроме младшего, содержат нули, причём перенос из старшего разряда при сложении не выполняется.
Например, число в двоичной системе счисления равно +11,01. Пусть задано l=1, т=3, n=4; дополняя целую и дробную части нулями, запишем число в виде +011,0100. Прямой обратный и дополнительный коды заданного числа одинаковы 0 011 0100.
Для отрицательного числа —11,01 прямой код имеет вид 1011 0100, обратный код — 1 100 1011 и дополнительный — 1 100 1100.
Слайд 9Троицкий Д.И. Информатика САПР 1 семестр
Модифицированный код
При сложении чисел, меньших единицы,
может получиться результат, по абсолютной величине больший единицы, что ведет к искажению результатов вычислений. Переполнение разрядной сетки легко обнаружить, используя модифицированный прямой, модифицированный обратный или модифицированный дополнительный коды. Отличие модифицированных кодов от обычных заключается в том, что на изображение знака числа отводится два разряда. “Плюс” изображается двумя нулями, а ”минус” – двумя единицами.
Например, обратные модифицированные коды чисел А1 = 0,11010 и А = -0,11010 запишутся в виде [А1]обр = 00,11010; [А2]обр = 11,00101.
Слайд 10Троицкий Д.И. Информатика САПР 1 семестр
Систематические коды
Систематический код – код, содержащий
в себе кроме информационных, контрольные разряды.
В контрольные разряды записывается некоторая информация об исходном числе. Поэтому можно говорить, что систематический код обладает избыточностью.
Понятие корректирующей способности кода обычно связывают с возможностью с возможностью обнаружения и исправления ошибки. Количественно корректирующая способность кода определяется вероятностью обнаружения или исправления ошибки.
На практике наибольшей является вероятность искажения одного символа (разряда). Следовательно, основное внимание нужно обратить на обнаружение и исправление одиночной ошибки.
Слайд 11Троицкий Д.И. Информатика САПР 1 семестр
Систематические коды
Корректирующая способность кода связана также
с понятием кодового расстояния.
Кодовое расстояние d(A,B) кодовых комбинаций А и В определяется как вес такой третьей кодовой комбинации, которая получается сложением исходных комбинаций по модулю 2.
Что такое «сложение по модулю»?
Слайд 12Троицкий Д.И. Информатика САПР 1 семестр
Операция сложения по модулю ⊕
Это операция
арифметического сложения, при котором единица переноса в старший разряд, если таковая образуется при поразрядном сложении, отбрасывается. Обозначается эта операция ⊕.
Пример. Сложить по модулю 2 двоичные числа 10 и 11.
Сложение выполним поразрядно:
1) разряд единиц: 0 ⊕ 1 = 1;
2) разряд десятков: 1 ⊕ 1 = 0 (единица в старшем разряде теряется).
Таким образом, 102 ⊕ 112 = 012.
Слайд 13Троицкий Д.И. Информатика САПР 1 семестр
Пример: кодовое расстояние между комбинациями 110101
и 010111 равно 100010.
110101
010111
_______
100010
Вес кодовой комбинации V(A) – количество единиц, содержащихся в кодовой комбинации. V(100010)=2
Пример. Сложить по модулю 10 десятичные числа 59 и 152.
Сложение выполним поразрядно:
1) разряд единиц: 9 ⊕ 2 = 1;
2) разряд десятков: 5 ⊕ 5 = 0;
3) разряд сотен: 0 ⊕ 1 = 1.
Таким образом, 59 ⊕ 152 =101.
Слайд 14Троицкий Д.И. Информатика САПР 1 семестр
Кодирование по методу четности-нечетности
Примером кода с
обнаружением одной ошибки является код с битом чётности. Конструкция его такова: к исходному слову добавляется бит чётности. Если в исходном слове число единичек чётно, то значение этого бита 0 (для контроля нечетности - 1), если нечётно — 1 (для контроля нечетности - 0). Таким образом, допустимые слова этого кода имеют чётное количество единичек. Если получено слово с нечётным (для контроля нечетности - четным) количеством единичек, то при передаче произошла ошибка.
При этом допускается, что может возникнуть только одна ошибка. В самом деле, для случая четности правильным будет только половина возможных комбинаций. Чтобы одна допустимая комбинация превратилась в другую, должно возникнуть, по крайней мере, два нарушения или четное число нарушений.
Слайд 15Троицкий Д.И. Информатика САПР 1 семестр
Пример кодирования по методу четности
Контроль по
методу четности-нечетности широко используют для контроля записи и считывания информации в запоминающих устройствах и сетях.
Слайд 16Троицкий Д.И. Информатика САПР 1 семестр
Применение кодирования по четности
Пример: кодирование информации
на перфоленте
5-й канал – бит четности. В каждой строке число единиц (отверстий) всегда нечетно
Слайд 17Троицкий Д.И. Информатика САПР 1 семестр
Улучшенное кодирование по методу четности
Можно представить
и несколько видоизмененный способ контроля по методу четности – нечетности. Длинное число разбивается на группы. Контрольные разряды выделяются всем группам по строкам и по столбцам, например:
Слайд 18Троицкий Д.И. Информатика САПР 1 семестр
Увеличение избыточности информации приводит к тому,
что появляется возможность не только обнаружить ошибку, но и исправить её.
Если произошла неисправность в каком-то из разрядов числа, это приводит к тому, что при проверке на четность сумма по соответствующим строкам и столбцам изменится.
Следовательно, нарушение четности по этой строке и столбцу можно зафиксировать, что в конечном счете означает обнаружение не только самой ошибки, но и места, где возникла ошибка.
Слайд 19Троицкий Д.И. Информатика САПР 1 семестр
Коды Хэмминга
Коды, предложенные американским ученым Р.
Хэммингом, обладают способностью не только обнаружить, но и исправить одиночные ошибки. Эти коды – систематические.
Обычно код Хэмминга описывается двумя целыми числами, например, (11,7) и используется при передаче 7-битных чисел. Такая запись говорит, что при передаче 7-битного кода используется 4 контрольных бита (7+4=11). При этом предполагается, что имела место ошибка в одном бите и что ошибка в двух или более битах существенно менее вероятна. С учетом этого исправление ошибки осуществляется с определенной вероятностью.
Richard Hamming 1915-1998
Слайд 20Троицкий Д.И. Информатика САПР 1 семестр
Коды Хэмминга
Рассмотрим пример передачи кода буквы
s = 1110011 с использованием кода Хэмминга (11,7).
Символами * помечены четыре позиции, где должны размещаться контрольные биты. Эти позиции определяются целой степенью 2 (1, 2, 4, 8 и т.д.). Контрольная сумма формируется путем выполнения операции сложения по модулю 2 над кодами позиций ненулевых битов. В данном случае это 11, 10, 9, 5 и 3.
Слайд 21Троицкий Д.И. Информатика САПР 1 семестр
Вычисляем контрольную сумму:
Получаем код:
Слайд 22Троицкий Д.И. Информатика САПР 1 семестр
Просуммируем снова коды позиций ненулевых битов
(т.е. кроме 7, 6 и 1) и получим нуль.
Это значит, что данные переданы верно
Слайд 23Троицкий Д.И. Информатика САПР 1 семестр
Рассмотрим два случая ошибок в одном
из битов посылки:
Просуммируем коды позиций ненулевых бит:
01112 = 710, следовательно ошибка произошла в седьмом бите.
Слайд 24Троицкий Д.И. Информатика САПР 1 семестр
Рассмотрим два случая ошибок в одном
из битов посылки:
Просуммируем коды позиций ненулевых бит:
01012 = 510, следовательно ошибка произошла в пятом бите.