- •2.2 Прямой код отрицательных чисел
- •2.2 Обратный код числа
- •2.2.1 Переход от обратного кода к прямому
- •2.3 Дополнительный код числа
- •2.4 Сложение чисел, представленных в форме с фиксированной запятой, на двоичном сумматоре прямого кода
- •2.5 Cложение чисел на двоичном сумматоре дополнительного кода
- •2.6 Сложение чисел на сумматоре обратного кода
- •2.7 Модифицированные бинарные коды
- •2.7.1 Переполнение разрядной сетки
- •2.7.2 Модифицированное сложение чисел в формате с плавающей точкой
- •2.7.3 Сложение чисел при разных значениях порядков
- •Задание
Лабораторная работа №2
АЛГЕБРАИЧЕСКОЕ СЛОЖЕНИЕ БИНАРНЫХ ЧИСЕЛ
Цель работы:
Изучить:
Коды бинарных чисел. Представление отрицательных чисел.
Прямой, обратный и дополнительный код бинарных чисел.
Переход от прямого кода к обратному, дополнительному и наоборот.
Переполнение разрядной сетки при сложении прямых, дополнительных и обратных кодов. Модифицированные коды.
Теоретические сведения
2.1 Формальные правила двоичной арифметики
В арифметике любого вида участвуют всегда два или более чисел. Формально это можно представить: , где ▼ - знак любого арифметического действия .
Результат выполнения операции ▼ цифр аi и bi в i-м разряде представляется двумя цифрами, цифрой Ci - результата соответствующей операции в данном разряде и цифрой Пi – переноса в старший разряд или займа в старшем разряде (при вычитании).
Результат Ci и перенос Пi формируются по следующим правилам:
Сложение:
Двоичный полусумматор - устройство, выполняющее арифметическое действие сложение без учета переносов с предыдущего разряда, т.е. на его вход подаются только числа разряда ai и bi
Правила сложения для полусумматора можно представить таблицей 2.1.
Таблица 2.1-Полусумматор
ai |
bi |
ci |
Пi |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
Однако, не учитывать переносов при суммировании многоразрядных чисел нельзя. Поэтому, при сложении пользуются устройством двоичный сумматор - устройство выполняющее арифметическое действие сложение с учетом переносов от предыдущего разряда и передачи переносов в последующий.
Таблица истинности цифрового автомата - двоичного сумматора представлена в таблице 2.2
Таблица 2.2- Сумматор
ai |
bi |
Пi |
ci |
Пi+1 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
Здесь поразрядное сложение выполняется по формуле
ai + bi + Пi-1 = Ci + Пi
где аi, bi - разряды чисел А.,В.; Ci - сумма і-го разряда Пi-1 - перенос из предыдущего разряда Пi - перенос в последующий разряд. При выполнении арифметической операции вычитания в двоичной системе счисления, так как и в десятичной, производится заем, равносильный вычитанию единицы из старшего разряда. Заимствование из старшего разряда эквивалентно добавлению к младшему разряду величины основания.
Кроме того, этот заем необходимо учитывать при вычитании цифр следующего старшего разряда (т.е. был ли заем в младшем разряде). Однако, такое вычитание, деление и умножение для автоматов является сложным т.к. при выполнении этих операций в вычислительных автоматах возникает проблема представления отрицательных чисел. Для машинного представления отрицательных чисел используют прямой код, обратный код и дополнительный.
2.2 Прямой код отрицательных чисел
Одним из способов выполнения операций с помощью двоичного сумматора, является замена операции вычитания операцией суммы с обратным или дополнительным кодом отрицательного числа:
А – В = А + (-В)обр.
Замена вычитания сложением ставит проблему представления отрицательного числа в цифровом формате.
Первый метод использует прямой код числа , где машинное изображение использует 1 (или 11) для обозначения «-».
Прямой код отрицательного числа есть код, все цифровые разряды которого остаются неизменными, записанными в нормализованной форме, а в знаковой части числа записывается "1"(или 11 для модифицированного кода ).
Например: N = - 0,101110 то NM = 1.101110.
Положительное число в прямом коде не меняет своего изображения.
Например: N= 0,110101 то NM= 0.110101
В прямом коде в числовую сетку автомата можно записать , где n – количество разрядов. А диапазон чисел, для прямого кода, лежит в пределах
– (1 – 2-n) <= NM <= (1 – 2-n). 2.1
Вторым методом представления отрицательных чисел есть представление их в обратном или дополнительном коде.
2.2 Обратный код числа
Обратным кодом числа NM = 1, a1, a2,…, an называется такое машинное изображение числа, для которого ai = 0, если оно равнялось "1" и наоборот, аi = 1, если оно равнялось "0".
Иначе, обратным кодом двоичного числа является инверсное изображение этого числа, т.е. все разряды исходного бинарного числа, принимают обратное значение.
Например: N = - 0,101110 то No6 = 1,010001.
Обобщая правила образования обратного кода на все основания систем счисления можно считать, что обратный код отрицательного числа получается при вычитании из (q-1) цифр по каждому разряду числа за исключением знаковых разрядов, которые заменяются значением (q-1) т. е.
Например: -0,286357(10)пр=9,713642(10)обр
-0,1010111101(2)пр=1,0101000010(2)обр
Особо обратить внимание.
Если в знаковом разряде машинного представления находится (q-1), то все цифры числа, исключая знаковый, заменяются вычетом из (q-1) значения разряда; если в знаковом разряде находится нуль, то преобразование не производятся.
Ниже приведены примеры для различных систем счисления:
9.243476 (10) →9.756523(10)
1.0111000111(2)пр→1.1000111000(2)обр
0.943890(10)пр→0.943890(10)обр
0.1010110101(2)пр→0.1010110101(2)обр
00.110000111(2)пр→00.110000111(2)обр
11.110100000(2)пр→11.001011111(2)обр
2.2.1 Переход от обратного кода к прямому
Переход от обратного кода к прямому производится по аналогичному правилу. Из значения (q-1) вычитается значение по каждому разряду, кроме знаковых. Для бинарной системы счисления (просто счастливый случай), можно перейти к прямому коду простым инвертированием разрядов обратного кода, кроме разрядов знаков.
Пример. Апр.= 11.0011001 Аобр = 11.1100110 Апр = 11.0011001
2.3 Дополнительный код числа
Дополнительный код числа N= – 0,a1a2..an –такое машинное представление , в котором число записывается обратным кодом с прибавлением в младшем разряде 1.
Правило перевода из прямого кода в дополнительный код следующее:
-если в знаковом разряде находится (q -1), то все цифры числа, кроме разрядов знаков, заменяются вычетами из (q-1) значения разряда, а затем к цифре последнего младшего разряда добавляется единица;
-если в знаковом разряде находится 0 (или 00), то преобразование цифр не происходит.
Например:
9.243476(10)пр = 9.756523обр. + 0000001 = 9.756524(10)доп
1.0111000111(2)пр = 1.1000111000обр. + 0.0000000001 = 1.1000111001(2)доп
–0,101110 = 1.101110 = 1.010001 + 0.000001 = 1.010010
0.425736пр = 0.425736доп
Таким образом, для положительных чисел прямой и дополнительный код совпадают, для отрицательного числа они различны. Для положительного числа, в разряде знака всегда устанавливают нуль, а отрицательного (q-1).
Обобщая, получаем: дополнительный код является математическим дополнением числа до основания системы счисления.
Пример: 0,275936(10)пр = 0,275936(10)доп
Пример: –0,275936(10)пр=10,000000(10)+(–0,275936(10)доп) = 9,724064(10)доп