Глотов А.Н., Жаркова Н.А. Устройства на логических интегральных схемах и микропроцессорах (2013) (1092076), страница 4
Текст из файла (страница 4)
Дляположительных чисел прямой код совпадает со значение числа, если учитывать изнаковый разряд.+1310=0 1101,+2710=0 11011-1310=1 1101-2710=1 11011Обратный код числа (дополнение до 1)Для положительных чисел обратный код идентичен прямому коду. Дляотрицательных чисел вес знакового разряда меняет содержимое цифровых разрядов.
Вобщем виде обратный код n(x) двоичного числа х записывается:n(x) = 0 x,x0n(x) = 1 {[2n-1-1]-|x|} x 0, где n число разрядов вместе со знаковым.Пример 1+610 =1102= 0 110обр (n-1=4-1=3)-610 = 1 {[1000-1]-110}=1 001Пример 2± 0001010 – число в двоичном коде записано (n-1) = 7-ю разрядамиДействуем по правилу для положительных чисел:+00010102=0 0001010обрДействуем по правилу для отричательных чисел:-00010102=1 [(10000000-1)-0001010]=1 1110101обрОглавлениеН.А. Жаркова, А.Н.
Глотов Логические интегральные схемы и микропроцессоры26Для отрицательных чисел практически это означает, что надо всем разрядамприсвоить обратное значение (01, 10). Иными словами "дополнить до 1" и в знаковомразряде записать «1».Дополнительный код (дополнение до 2)Для положительных чисел дополнительный код идентичен прямому коду. Дляотрицательных чисел вес знакового разряда меняет содержимое цифровых разрядов. Вобщем виде дополнительный код n(x) двоичного числа х записывается:n(x) = 0 x,x0n(x) = 1 {2n-1-|x|}x 0, где n число разрядов с учетом знакового.Дополнительный код отрицательных чисел получают по тем же правилам, что иобратный код (замена всех 0 на 1, а 1 на 0) с прибавлением 1 в LSB, в знаковом разряде 1.Другое название дополнительного кода – добавление до «2».Пример:-14=-011102=1 01110пр =(1 10001об+1)=1 10010допЗамечание: ввиду опасности переполнения стараются представить числа с большимколичеством нулей слева.
Число при этом значение не меняет, а разрядностьувеличивается.Составим таблицу сравнения прямого, обратного и дополнительного кодов двоичныхчисел.Десятичное число-7-6-5-4-3-2-1-0+0+1+2+3+4+5+6+7Двоичноечисло (N=3)-111-110-101-100-011-010-001000000+001+010+011+100+101+110+111Прямой код1 1111 1101 1011 1001 0111 0101 0011 0000 0000 0010 0100 0110 1000 1010 1100 111Обратныйкод1 0001 0011 0101 0111 1001 1011 1101 1110 0000 0010 0100 0110 1000 1010 1100 111Дополнительный код1 0011 0101 0111 1001 1011 1101 1110 0000 0000 0010 0100 0110 1000 1010 1100 111ОглавлениеН.А.
Жаркова, А.Н. Глотов Логические интегральные схемы и микропроцессоры27Видно, что также как и в прямом коде в обратном есть неоднозначность «0». Этоограничило его распространение. В дополнительном коде для «+0» и для «-0» кодыодинаковые. Особенности кодирования приводят с тому, что арифметические операции вобратном и дополнительном кодах делаются по разным правилам.Операции сложения (вычитания) и в обратном кодепроизводят по следующим правилам:1. Оба числа представляют в обратном коде.2.
Производят поразрядное сложение.3. Результат получается в обратном коде.4. Производят анализ результата- если переполнения нет и число положительное («0» в знаковом разряде), числополностью соответствует результату, при отрицательном («1» в знаковом разряде) –заменяют все 0 на 1.- если переполнение, то предварительно переносят 1 переполнения в младшийзначащий разряд (LSB) и далее поступают по правилу знака результата (числоположительное – «0» в знаковом разряде, число полностью соответствует результату, приотрицательном – «1» в знаковом разряде заменяют все 0 на 1) .13-4=9, 1310=1101пр =01101об-410=-0100пр =11011об0 1101+1 1011_________10 1000=01001пр=9(1 переноситься в LSB разряд при переполнении).4-13=-9, -1310=-011012= 1 10010об410=001002= 0 00100об1 10010+ 0 00100_____1 10110об = -01001пр=-9Операция сложения (вычитания) в дополнительном кодеПроизводят по следующим правилам:1) Оба числа представляются в дополнительном коде.2) Производят поразрядное сложение.3) Результат получается то же в дополнительном коде.ОглавлениеН.А.
Жаркова, А.Н. Глотов Логические интегральные схемы и микропроцессоры284) Далее проводят анализ результата:-если число положительное (0 в знаковом разряде), это число полностьюсоответствует результату,-если число отрицательное (1 в знаковом разряде), то для получения истинного(абсолютного значения) значения результата надо заменить все 0 на 1 иприбавить 1 в LSB,-«1» переполнения отбрасывается.Пример.-14=-001110 =(1 110001об+1)=1 110010 доп-8=-001000 =(1 110111об+1)=1 111000доп1 110010+ 1 111000----------11 101010доп = -010101+1==010110пр=-2210Операции умножения и деления в ЭВМ.Операция умножение в двоичном коде сводится к поразрядному сдвигу исложению значащих разрядов числа.
Знак определяют «сложением по модулю 2»знакового разряда.Пример.101011110110101101011010110101_____1001100001Операция деления..Будем рассматривать операцию алгебраического деления чисел, представленных вформе с фиксированной точкой, при этом выполнение операции содержит действия,связанные с определения модуля частного.
Знак частного может быть найден тем жеприемом, что и знак произведения в рассмотренной выше операции умножения сотделением знаковых разрядов. На рисунке 4.1 показана схема алгоритма нахождениячастного положительных чисел a и b.ОглавлениеН.А. Жаркова, А.Н. Глотов Логические интегральные схемы и микропроцессоры29Стартс=a-bНетс>0ДаЗапись 1 в очереднойиз старших разрядовЗапись 0 в очереднойиз старших разрядовСдвиг в лево сСдвиг в лево сс= с - bс= с + bСформированывсе разрядычастногоНетДаСтопРисунок 4.1Встречающуюся в алгоритме операцию вычитания числа заменим прибавлениемчисла -b, представленного в дополнительном.
Из алгоритмы видно, что операция делениязанимает много времени.4.3. Двоично-десятичное кодированиеДвоичная система счисления удобна для ЭВМ и, совершенно, непривычначеловеку. Кроме того, если приходиться все время переводить их одной системы вдругую, то это за счет деления занимает достаточно много времени.
Если вычислений вдвоичном коде много (большой объем), то переход от десятичных к двоичным числам иобратно оправдан. При малом объеме вычислений удобным (эффективным) способомявляется двоично-десятичное кодирование.Существует несколько способов кодирования десятичных цифр.ОглавлениеН.А. Жаркова, А.Н. Глотов Логические интегральные схемы и микропроцессоры30Наиболее известным является BCD (Binary-Coded-Decimals). При этом десятичнаяцифра представляется в виде комбинации четырех двоичных цифр (0 и 1) и сохраняет еедесятичный вес. Код 8421 – такой код называют взвешенным, так как каждый разрядимеет определенный вес.
В данном случае веса принимают значения 8,4,2,1. Так как весасоответствуют двоичной системе, код называют естественным двоично-десятичным.Сложение. Если переноса в старшие разряды нет, то результат получается сразу.Если произошел перенос, то результат необходимо корректировать. Перенос в старшийразряд должен быть после 10 (1010), а он произошел только после 16 (1111),следовательно, для получения правильного результата надо добавить 6 (0110).Вычитание. Если заѐмов нет, то результат не требует коррекции. Заем из старшегоразряда соответствует 16 (1111), а надо было занять только 10 (1010), следовательно, надовычесть 6 (0110).Таблица наиболее распространенных двоично-десятичных кодов.Десятичноечисло0123456789Код:8421естественный0000000100100011010001010110011110001001Код:24210000 (0+0)0001(0+1)0010(0+2)0011(0+3)0100(0+4)1011(2+3)1100(2+4)1101(2+5)1110(2+6)1111(2+7)Код «3» сизбытком0011 (0+3)0100 (1+3)0101 (2+3)0110 (3+3)0111 (4+3)1000 (5+3)1001 (6+3)1010 (7+3)1011 (8+3)1100 (9+3)Код Грея00000001 1р0011 2р0010 1р0110 3р0111 1р0101 2р0100 3р1100 4р1000 3рБольшая часть двоично-десятичных кодов возникла из-за необходимости экономииэлектроэнергии, так как первоначально логические операции реализовывались с помощьюреле.
В наше время двоично-десятичное кодирование используется в основном дляшифрования информации, так как можно задавать вес каждого разряда произвольно и дляего восстановления (расшифровки) необходимо знать ключ. К современным кодам такжепредъявляются требования максимально возможной простоты при арифметическойобработке.Так, например, для кодирования может использоваться код 2421 (код Эйкена) –старшему значащему разряду приписывается 2 вместо 8, остальные имеют вес 4,2,1. Кодвзвешенный, так каждому разряду соответствует определенный вес.ОглавлениеН.А. Жаркова, А.Н. Глотов Логические интегральные схемы и микропроцессоры31Код с избытком 3 – не взвешенный, т.к. отдельным двоичным разрядам нельзяприписать фиксированный вес.
Каждой группе и четырех битов добавлено число 3(см.таблицу). При вычислении десятичного числа для группы двоичных цифр производятуменьшение числа на 3, а затем результат преобразовывают в десятичное число. Кодявляется самодополняющимся. Так если сложить число из 1 строки с числом из 10 строки(из 2 с 9, из 3 с 8 и так далее) результат будет одинаковый «1111». Такой код удобен дляформирования дополнительного кода.
Все цифры содержат 0 и 1, в результате такой коддает меньше ошибок при детектировании нуля с системах передачи информации, так как«0» тоже состоит из 0 и1.Код Грея – не взвешенный (рефлексный). При последовательном переходе отодного числа к другому изменятся только один двоичный разряд. Имеет преимуществопри использовании в управляющих модулях, так как команда на ввод следующего шагавоздействует только на один триггер (управляющего регистра или счетчика). Другоепреимущество: отсутствие дополнительных помех связанных с формированием коротких(«иголок») импульсов, возникающих при декодированиитриггерныхсостояний,например, в счетчиках.