Дж.Хиллбурн, П.Джулич Микро-ЭВМ и микропроцессоры (1979) (1092080), страница 11
Текст из файла (страница 11)
В результате заема в столбце 5 цифра 3 замещается на 3 — ! =2. Таким образом ЗА76Рга — 1СВ39та = 1ОСЗбгч Системы счисления и коды 75 ИРЯМОИ КОД ЧИСЛА Наиболее простым способом представления числа со знаком является прямой двоичный код числа. Число в прямом двоичном коде называют также двоичным числом со знаком. Для числа, за.
иимающего и двоичных разрядов, разряд МБВ используется для представления знака, а в оставшихся л — 1 разрядах записывается абсолютное значение числа в двоичной системе. Рассмотрим, например, запись числа — 13!о при помощи пяти двоичных разрядов. Имеем — 13ы=1,1101 знаковый разряд ( †) В данной записи для отделения знакового разряда от цифровых разрядов использовалась запятая, которая обычно опускается. Приведем еще один пример: + 27те=О 11011 знаковый разряд (+) В табл. 3.6 показаны десятичные эквиваленты для 4-разрядных двоичных чисел со знаком. В данной таблице для нуля имеются два представления: 0,000 и 1,000.
Поэтому здесь при помощи чегы- Таблица З.б Десятичные иквяввленты 4-равряднык двончнык чисел в прямом коде Днончнос число д Днончиос число Десятичное число,' О, 000 О, 001 О, 010 О, 011 О, 100 О, 101 0,1Ю О, 111 +О +1 +2 +3 +4 +6 +6 +7 1,000 1,001 1,0Ю 1,011 1,!ОО 1,101 1,110 1,111 — 0 — 1 — 2 — 3 — 4 — 6 — 6 — 7 называемый знаковым разрядом, помещается со стороны иаиболь. шего значащего разряда числа. Для обозначения положительных и отрицательных значений используют соответственно 0 и 1, В настоящем разделе мы опишем три важных способа пред.
ставления двоичных чисел со знаком, известных как прямой, обратный и дополнительный коды числа [3 — 5], 76 Глава 3 рех используемых разрядов можно выразить только пятнадцать значений чисел, а одно значение теряется. Путем анализа разряда знака легко определить требуемую операцию — сложение либо вы. читание числа, — которая выполняется над цифровыми разрядами, как было описано в равд. 3.2. Однако для реализации действий сложения и вычитания используются различные схемы. Описанные ниже представления отрицательных чисел в обратном и дополнительном кодах позволяют избежать этого. ОБРАТНЫЯ КОД ЧИСЛА При представлении двоичного числа в обратном коде знаковому разряду приписывается отрицательный вес — [2а-' — 1].
Для положительных чисел обратный код идентичен прямому коду числа. Однако для отрицательных чисел отрицательный вес знакового разряда меняет содержимое цифровых разрядов. Целое число х нз л двоичных разрядов (включая знаковый) в обратном коде можно записать следующим образом: У (х) =О, х, х > О, (3.2а) =1, ([2" ' — 1[ — (х([, х(0. (3.26) В качестве примера уравнения (3.2а) рассмотрим десятичное число 6.
В двоичной системе бы= !10ь Таким образом, с учетом знакового разряда для представления данного числа требуются четыре двоичных разряда: М (6) = 0,110 Этот результат совпадает с прямым кодом числа. Теперь рассмотрим число — б,о. В данном случае (х(=6,о= =110ь Поскольку (х( занимает три разряда для представления рассматриваемого числа (с учетом знакового разряда), необходимы четыре разряда.
Таким образом, в уравнении (3.2б) л=4, 2"-'=2о=8го —— 1000о и 2"-' — 1=7~о — — 111м т. е. получим У ( — 6) = 1, [111 — 110[ = 1,001 Сравнивая Результаты двух рассмотренных примеров, можно заметить, что У(6)+М( — 6) =1,111. Это уравнение отражает свойство, заключающееся в том, что при суммировании некоторого двоичного числа и его поразрядного дополнения до единицы во всех разрядах получаются единицы.
Необходимо также отметить, что если каждый разряд числа У(6) заменить его дополнением до единицы, то получим У( — 6). Это также чрезвычайно важное свойство чисел в дополнительном коде. Рассмотрим, например, число )У (17) = О, 10001 Системы счисления и коды 77 Заменяя нули на единицы, а единицы на нули (образуя поразрядное дополнение числа до единицы), получаем 7т' ( — 17) = 1,01! 10 Перевод отрицательного числа в обратном коде в десятичную систему счисления можно осуществить двумя способами.
Один из них является обратным процедуре поразрядного дополнения числа до единицы. Рассмотрим, например, 4-разрядное число 1,0!!. Обра. зуя поразрядное дополнение до единицы, получаем число 0,100, или +4. Таким образом, 1,011 = — 4. При втором способе используется тот факт, что знаковый раз. ряд л-разрядного двоичного числа имеет отрицательный вес (2"-' — 1). В нашем случае л=4, 2"-' — 1=7 и вес знакового раз. ряда есть — 7. Таким образом, имеем 1,011 = — 7+ 3= — 4 Данный способ очень удобен, так как здесь мы просто переводим в десятичную систему содержимое цифровых разрядов и к по. лученному' результату добавляем отрицательный вес знакового разряда. В табл.
3.7 приведены десятичные эквиваленты 4-разрядных двоичных чисел, записанных в обратном коде. Проанализировав данные таблицы, легко увидеть, что положительные и отрицатель. ные числа обладают свойством взаимной поразрядной дополняе. мости до единицы. Так же, как и для чисел в прямом коде, здесь существуют два представления для нуля: 0,000 и 1,111. Таблица 8.7 Десятичные эквиваленты 4-разрядных двоичных чисел в обратном коде Диаичное число и обратном коде Деоичнсе число е обратном коде Десятичное числа Десятичное число Основное преимущество обратного кода заключается в том, что вычитание в этом случае можно заменить сложением.
Предположим, например, что мы хотим выполнить операцию 17,о— — 12~о=17!о+( — 12!о). В обратном коде й7(!7) =О,!0001, а Л!(12) = =00!!00. Таким образом, У( — 12) =1,10011, Сложение Ж(!7)+ч О, 000 0,001 0,010 0,011 0,100 0,101 0,110 О,!11 +О +1 +2 +3 +4 +5 +б +7 1,111 1,!10 1,10! 1,100 1,0!1 1,010 1,001 1,000 — 0 — ! — 2 — 3 — 4 — 5 — б — 7 78 Глава г днина3ый разряд 1 Разрядат нерея еа а1 +17 1 1 -1д Ланличеений неаенее Од +4 +1 д, ОО 1 д1 Рис.
3.!1. Арифметическая операция 17 †12 в обратном коде. ДОПОЛНИТЕЛЬНЫЙ КОД ЧИСЛА Представление двоичных положительных чисел в дополнитель ном коде идентично представлению:в обратном или прямом коде. Для отрицательных чисел дополнительный код равен обратному плюс 1. Поэтому п-разрядное целое двоичное число х будет представлено следующим образом: М (х) =А( (х), х >;О, (3.3а) =А7(х)+ 1, х (О, (3.3б) где Ж(х) определяется (3.2). Вес знакового разряда для дополнительного кода числа равен — 2"-' при х(0. В качестве примера рассмотрим основные этапы процедуры построения дополнительного кода для числа †13..
1. Определим обратный код числа 13~а. А7(13)=0,1101 2. Получим поразрядное дополнение до единицы числа А1(13): М ( — 1З)=1,00!0 +М( — 12) показано на рис. 3.11, где операция сложения выполняется по правилам, описанным в равд. 3.2. Пренебрегая ~переносом из знакового разряда, имеем в результате 0,00100, или +4~в. Правильным ответом, который получается путем добавления единицы циклического переноса к первоначальной сумме, будет +бци Таким образом, окончательный результат есть 0,00101, или б~е. Из-за необходимости реализации циклического переноса обратный код числа для выполнения, вычитания в микропроцессорах, как правило, не употребляется. Для этой цели используют дополнительный код, который описан ниже.
Однако при записи чисел в дополнительном коде весьма полезно знать обратный код. Системы счисления и кады 79 3. Прибавим 1 к Ж ( — 13): М( — 13)=йг( — 13)+ 1=1,0011 Таблица З.д Десятичные вквнваленты 4-разрядных двоичных чисел в дополнительном коде Двоичное числа в дополнительно» коде Двоичное число в допалинтельнои коде Десятичное число Десятичное число О, 000 О, 001 0,010 0,01! 0,100 0,101 0,110 0,111 — 1 — 2 — 3 — 4 — 8 — 6 — 7 — 8 1,!1! 1,110 1,101 1,100 1,011 1,0!О 1,00! 1,000 +О +1 +2 +3 +4 +8 +б +7 Десятичные эквиваленты 4-разрядных двоичных чисел, записанных в дополнительном коде, приведены в табл.
3.8. Как можно видеть, нуль имеет лишь одно представление. Кроме того, заметим, что число — 8 можно представить в дополнительном коде при помощи четырех двоичных разрядов, а в прямом и обратном кодах нельзя. Это порождает кажущиеся трудности в использовании соотношений (3.3). Если для числа — 8 не существует 4-разрядного обратного кода, то как получить его дополнительный код? Вспомним, что отрицательный вес знакового разряда 4-разрядного числа есть — 2'= — 8. Добавляя содержимое цифровых разрядов к этому отрицательному весу для получения требуемого числа, видим, что 1,000= — 2з+О= — 8. Рассмотрим далее 5-разрядное представление числа — 8: Тт!(8) =0,1000 и Тт'( — 8) =1,0111.
Таким образом, М( — 8) =Тт'( — 8)+ +1=1,1000. Сравнивая этот результат с 4-разрядным представлением числа, замечаем, что,количество используемых разрядов определяет величину цифровой части операнда. Проанализируем теперь свойства операций над числами в дополнительном коде. Возьмем, например, разность 7 — 8=М(7)+ '+М( — 8), как показано на рис. 3.!2,а для 5-разрядных двоичных чисел.
В этом примере как перенос в знаковый разряд Сз, так н перенос из знакового разряда Са+! равны нулю. В результате сло- Данный метод обычно используется в ЭВМ, так как он легко реализуется при помощи технических средств. Другой метод заключается в следующем: начиная справа (1.5В), выписываются все разряды двоичного представления абсолютной величины числа до первого единичного разряда включительно; для остальных разрядов производится поразрядное дополнение до единицы. 80 Глава д 00 0,0111 + 1,1000 Разряды переноса +7 1,1111 1,1001 + 1,1000 Разряды переноса -7 1,0001 Рис. ЗЛЯ.
Арифметические оперении 7 — 8 (а) и — 7 — 8 (б) в дополнительном коде. жения получаем число — 1 в дополнительном коде. Далее рассмотрим сложение чисел — 7 и — 8 (рис. 3.12,б). При суммировании замечаем, что и Сз и Са+1 раины единице. Однако правильный ответ 1,0001 = — 15 требует, чтобы мы пренебрегли Сз+ь В приме. рах рис. 3.12 переполнения не,происходит, так как оба результата находятся в интервале от 15 до — 16 (этот интервал включает все 5-разрядные двоичные числа). Таким образом, значением Сиял мы пренебрегаем.