Практическая работа №2
Дисциплина «Архитектура ЭВМ» специальности 230115
Выполнение арифметических операций в двоичной системе счисления.
Постановка задачи.
Выполнить простые арифметические действия над двоичными числами.
Выполнить арифметические действия над двоичными числами с плавающей точкой.
Цель работы. Получение и закрепление навыков работы в недесятичной арифметике. Закрепление понятия мантиссы, нормальной формы представления числа.
Теоретическая часть.
Двоичная арифметика
В этой главе рассмотрим выполнение микропроцессором (МП) арифметических операций с двоичными числами.
Двоичное сложение
Сложение двоичных чисел подобно сложению десятичных. В обоих случаях операции начинаются с обработки наименьших значений цифр в крайней справа позиции. Если результат сложения наименьших значащих цифр двух слагаемых не помещается в соответствующем разряде результата, то происходит перенос. Цифра, переносимая в соседний слева разряд, добавляется к содержимому последнего. Перенос возникает, если результат сложения цифр одноименных разрядов больше 9 при использовании десятичной арифметики, и только 1 в случае двоичной.
Рассмотрим пример:
|
десятичная |
двоичная |
перенос |
11 |
1111 1110 |
слагаемое |
099 |
0110 0011 |
слагаемое |
095 |
0101 1111 |
сумма |
194 |
1100 0010 |
Двоичная арифметика намного проще десятичной, т.к. перенос возникает в единственном случае - при двух единицах в одноименных разрядах.
Двоичное вычитание
Как и в случае сложения, различия выполнения в двоичной и десятичной форме состоят лишь в особенностях поразрядных операций. Если содержимое разряда уменьшаемого меньше содержимого одноименного разряда вычитаемого, то имеет место заем. В двоичной системе это происходит в том случае, когда из нуля вычитается единица.
Рассмотрим пример:
|
десятичная |
двоичная |
заем |
1 |
110 0000 |
уменьшаемое |
109 |
0110 1101 |
вычитаемое |
049 |
0011 0001 |
разность |
060 |
0011 1100 |
Двоичные числа в дополнительном коде
Существует несколько способов представления отрицательных двоичных чисел. Большинство из них не соответствует возможностям аппаратной основы арифметико-логических устройств (АЛУ).
Представление числа посредством величины и знака, причем бит знака занимает самый старший разряд двоичного числа. Если число положительное - бит знака равен 0, если оно отрицательное, то этот бит равен 1.
Аналогично и в обратном коде, который формируется заменой всех нулей числа на единицы, а всех единиц - на нули. Поскольку знаковый разряд положительного числа равен 0, то в обратном коде отрицательного числа 1. Несмотря на простоту правила формирования обратного кода работа с ними вызывает ряд трудностей. Так нулевой результат может быть представлен комбинацией или двоичных нулей, или двоичных единиц.
В микроЭВМ широко используется представление отрицательных чисел в дополнительном коде (код дополнения до 2). При таком представлении исчезает двусмысленность представления нулевого результата, присущая способу в обратном коде. Формирование дополнительного кода или сокращенно дополнения состоит из двух операций получения обратного кода и дополнения единицы.
Пример:
число 410 в двоичной форме |
0000 0100 |
обратный код числа |
1111 1011 |
добавляемая 12 |
1 |
число 410 в дополнительно коде |
1111 1100 |
Для представления двоичного числа в дополнительном коде можно пользоваться другим способом. В поисках первого бита равного единице просматривают справа налево разряды числа, начиная с наименьшего по значимости. До тех пор, пока встречаются нули, их копируют в одноименные разряды результата. Первая встретившаяся единица также копируется в соответствующий разряд, но каждый последующий бит исходного числа заменяется на обратный.
Рассмотрим небольшую таблицу:
8 - разрядное двоичное число
|
Десятичный эквивалент
|
|
двоичного числа без знака |
двоичного числа со знаком (отрицательные в дополнительном коде) |
|
0000 0000 |
0 |
+0 |
0000 0001 |
1 |
+1 |
0000 0010 |
2 |
+2 |
---…--- |
---…--- |
---…--- |
0111 1101 |
125 |
+125 |
0111 1110 |
126 |
+126 |
0111 1111 |
127 |
+127 |
---…--- |
---…--- |
---…--- |
1000 0000 |
128 |
-128 |
1000 0001 |
129 |
-127 |
1000 0010 |
130 |
-126 |
---…--- |
---…--- |
---…--- |
1111 1101 |
253 |
-3 |
1111 1110 |
254 |
-2 |
1111 1111 |
255 |
-1 |
Согласно этой таблице арифметические операции над двоичными числами без знака ничем не отличаются от операций над числами со знаком. Это существенно упрощает аппаратную реализацию операций в МП.
В общем случае при сложении или вычитании чисел со знаком результат есть число со знаком, если при этом старший бит равен единице, то результат - отрицательное число в дополнительном коде. Если требуется определить абсолютное значение результата последний необходимо представить в обратном коде, а затем прибавить единицу.
Пример 1: Вычислим разность (58 – 23)
0001 0111 число 2310
1110 1001 дополнительный код 2310
вычисление разности
58 |
0011 1010 |
число 5810 |
– |
– |
|
23 |
1110 1001 |
дополнительный код 2310 |
15 |
1 0010 0011 |
результат 1510 |
единица переноса отбрасываемая в случае положительного результата |
||
Пример 2: Вычисление разности (26 – 34)
0010 0010 число 3410
1101 1110 дополнительный код 3410
вычисление разности
26 |
0001 1010 |
число 2610 |
– |
– |
|
34 |
1101 1110 |
дополнительный код 3410 |
-8 |
1111 1000 |
результат в дополнительном коде, значит число отрицательное |
определим абсолютное значение:
1111 1000 дополнительный код разности
0000 0111 обратный код
1 единица к обратному коду
0000 1000 абсолютное значение 810
