Арифметические операции с двоичными числами в ЭВМ
Все операции с числами в ЭВМ реализуются в АЛУ (арифметико-логическом устройстве) процессора. Числа, которые участвуют в операциях, называются операндами. Главную роль в АЛУ играет «сумматор» в связи с тем, что все арифметические операции сводятся к простым элементарным действиям с прямыми, обратными и дополнительными кодами чисел. Основной операцией в сумматоре является сложение.
Прямой код числа – само исходное число.
Обратный код числа – инвертированный поразрядно прямой код , в этом случае производится замена 0→1, 1→0. Например, число в прямом коде 01102, а в обратном коде 10012
Дополнительный код образуется добавлением 1 к младшему разряду (крайнему справа) обратного кода.
Правило № 1:
1. Операция сложениядля положительных чисел заменяется поразрядным сложением операндов в прямых кодах.
Пример №1.1 012 + 012=102 или в десятичной системе счисления 1+1=2
Пример №1.2 000010112 + 000001102=? или в десятичной системе счисления 11+ 6=?
Первое слагаемое 00001011 (в прямом коде)
Второе слагаемое 00000110 (в прямом коде)
Результат сложения : 00001011
+ 00000110
00010001 = 1710
Правило № 2:
2. Операция вычитания для положительных чисел заменяется сложением операндов, причем второй операнд берется в дополнительном коде, т.е. А + В=А + (- В) , далее от полученного результата сложения в старшем (левом) разряде следует вычесть 1.
Пример № 2.1 10-7= 000010102-000001112=?
Переведем вычитаемое число 00000111 сначала в обратный код 11111000, а затем в дополнительный: 11111000+00000001=11111001 Теперь сложим уменьшаемое число ( в прямом коде) и вычитаемое (в дополнительном) коде:
+ 11111001
100000011 Отбрасываем слева 1, тогда получим результат : 112=3
Пример № 2.1
34 - 22 = 34 + (- 22) =12
Запишем этот пример в двоичном виде: 100010 - 010110 = 001100
Дополнительный код вычитаемого числа 10110 будет такой: 01001 + 00001 = 01010
Тогда исходный пример можно заменить сложением так 100010 + 01010 = 101100 Отбросим одну единицу в старшем разряде, получим 001100. Отбросим также незначащие нули слева и получим 11002=12, то есть пример решён правильно.
Задача № 3: Если 8-разрядный дополнительный код равен 101100112 , то десятичное значение данного числа равно …?
Решение: 1) Вычтем 1 из младшего разряда дополнительного кода, получим 101100102
2) Переведем полученный код числа в обратный код, получим 010011012
3) Переведем полученное двоичное число в десятичное, получим 77
3. Операция умножения двоичных чисел сводится к «школьному» умножению в столбик
Пример № 3.1.
11012 x11012 =13 x13= 169
x 1101
+ 1101
1101
101010012 = 169
Пример № 3.2. 1012 x1102=5 x 6=30
x 110
+ 101
111102 = 30
4. Операция деления двоичных чисел сводится к «школьному» делению, например:
Сначала мы записываем делимое. В данном случае это число 1000001 (в десятичном виде 65). Затем, справа от него, рисуем угол. В верхней части угла записываем делитель. В нашем случае – это 101 (десятичное 5). Затем мы начинаем находить частное поразрядно Нам придется лишь проверять не больше ли делитель, чем число, составляющее первые три разряда делимого. Как видим первые три разряда составляют число 100, что меньше, чем 101. Поэтому берем первые четыре разряда делимого. Число, составляющее первые четыре разряда делимого (1000) естественно больше делителя. Поэтому мы записываем делитель под первыми четырьмя разрядами делимого и вычитаем эти два числа. Операцию вычитания каждый раз заменяем сложением вычитаемого в дополнительном коде. Получаем разность 11. В первый разряд частного записываем 1. Находим следующий разряд частного. Для этого сносим следующий разряд делимого (так же, как это делается при делении в десятичной системе). Проверяем – можно ли теперь вычесть из него 101. Число 110 больше, чем 101. Поэтому мы записываем единицу в следующий разряд частного и производим вычитание этих двух чисел. Разность равна 1. Далее ищем третий разряд частного. Сносим еще один ноль с очередного разряда делимого. Но из числа 10 невозможно вычесть 101. 10 меньше, чем 101. Поэтому записываем в очередной разряд частного ноль и сносим последний разряд делимого. Теперь вычитание возможно. Более того, результат вычитания равен нулю. Это означает во-первых, что последний разряд частного равен единице, а во-вторых то, что число 1000001 поделилось на 101 без остатка. Результат деления равен 1101 (десятичное 13).
Дата добавления: 2015-08-08; просмотров: 2309;