Вы находитесь на странице: 1из 9

Лабораторная работа №2

Тема: Выполнение арифметических операций – сложение, вычитание, умножение.

Двоичная арифметика
Правила выполнения арифметических действий над двоичными числами определяются
арифметическими действиями над одноразрядными двоичными числами.

Сложение Вычитание Умножение


00 0 00  0 0*0  0
0 1 1 1 0  0 1* 0  0
1 0  1 1 1  0 0 *1 0
1  1  10 10  1  1 1* 1  1


перенос в
старший разряд

Правила выполнения арифметических действий во всех позиционных системах счисления


аналогичны.

Сложение
Как и в десятичной системе счисления, сложение двоичных чисел начинается с правых
(младших) разрядов. Если результат сложения цифр МЗР обоих слагаемых не помещается
в этом же разряде результата, то происходит перенос. Цифра, переносимая в соседний
разряд слева, добавляется к его содержимому. Такая операция выполняется над всеми
разрядами слагаемых от МЗР до СЗР.

Пример.

Сложить два числа в десятичном и двоичном представлении (формат – 1 байт).

Перенос (единицы) 11 1111111


Слагаемое 1 099(10) 01100011(2)
Слагаемое 2 095(10) 01011111(2)
Сумма 194(10) 11000010(2)

Прямой, обратный и дополнительный коды


В целях упрощения выполнения арифметических операций и определения знака
результата применяют специальные коды для представления чисел. Операция вычитания
(или алгебраического сложения) чисел сводится к арифметическому сложению кодов,
облегчается выработка признаков переполнения разрядной сетки. В результате
упрощаются устройства, выполняющие арифметические операции.

Для представления чисел со знаком в ЭВМ применяют прямой, обратный и


дополнительный коды.

Общая идея построения кодов такова. Код трактуется как число без знака, а диапазон
представляемых кодами чисел без знака разбивается на два поддиапазона. Один из них
представляет положительные числа, другой – отрицательные. Разбиение выполняется
таким образом, чтобы принадлежность к поддиапазону определялась максимально
просто.

Наиболее распространенным и удобным является формирование кодов таким образом,


чтобы значение старшего разряда указывало на знак представляемых чисел, т.е.
использование такого кодирования позволяет говорить о старшем разряде как о
знаковом (бит знака) и об остальных как о цифровых разрядах кода.

Прямой код
Это обычный двоичный код, рассмотренный в разделе двоичной системы счисления. Если
двоичное число является положительным, то бит знака равен 0, если двоичное число
отрицательное, то бит знака равен 1. Цифровые разряды прямого кода содержат модуль
представляемого числа, что обеспечивает наглядность представления чисел в прямом
коде (ПК).

Рассмотрим однобайтовое представление двоичного числа. Пусть это будет 28 (10). В


двоичном формате – 0011100(2) (при однобайтовом формате под величину числа отведено
7 разрядов). Двоичное число со знаком будет выглядеть так, как показано на рис. 2.1.

+28(10)=00011100(2) –28(10)=10011100(2)
0 модуль 1 модуль
a б

Рис. 2.1. Формат двоичного числа со знаком в прямом коде:


а – положительное число; б – отрицательное

Сложение в прямом коде чисел, имеющих одинаковые знаки, достаточно просто: числа
складываются, и сумме присваивается знак слагаемых. Значительно более сложным
является алгебраическое сложение в прямом коде чисел с разными знаками. В этом
случае приходится определять большее по модулю число, производить вычитание
модулей и присваивать разности знак большего по модулю числа. Такую операцию
значительно проще выполнять, используя обратный и дополнительный коды.

Обратный код
В обратном коде (ОК), так же как и в прямом коде, для обозначения знака
положительного числа используется бит, равный нулю, и знака отрицательного –
единица. Обратный код отрицательного двоичного числа формируется дополнением
модуля исходного числа нулями до самого старшего разряда модуля, а затем
поразрядной заменой всех нулей числа на единицу и всех единиц на нули. В знаковом
разряде обратного кода у положительных чисел будет 0, а у отрицательных – 1.

На рис. 2.2 приведен формат однобайтового двоичного числа в обратном коде.

В общем случае ОК является дополнением модуля исходного числа до наибольшего числа


без знака, помещенного в разрядную сетку.

Алгоритм формирования ОК очень прост, при этом ОК позволяет унифицировать


операции сложения и вычитания в АЛУ, которые в прямом коде выполняются по-разному.
Однако работа с ОК вызывает ряд трудностей. В частности, возникают два нуля: +0 и -0,
т.е. в прямом коде (в котором представлены положительные числа) имеет место (+0) =
000...0, а в обратном коде (в котором представлены отрицательные числа): (-0) = 111...1.

Кроме того, в операциях сложения и вычитания требуется дополнительная операция по


прибавлению бита переноса в младший разряд суммы. Рассмотрим правила
алгебраического сложения в ОК (поскольку А-В=А+(-В)). Алгоритм сложения в ОК
содержит:
 сложение кодов, включая знаковый разряд;
 прибавление переноса к МЗР (младшему значащему разряду) суммы.

Пример.

Вычислить выражение -3(10) -2(10).

Прямой код Обратный код


-3(10) 1 011 Измен. 1 100
+ + +
-2(10) 1 010 Измен. 1 101
11 001 =1010 Бит знака равен 1, сле-
довательно, результат
перенос отрицательный в ОК.
Результат в ПК имеет
вид: 1101 или -5(10).

Пример.

Вычислить 7(10)-3(10).

Прямой код Обратный код


7(10) 0 111 Не измен. 0 111
+ + +
-3(10) 1 011 Измен. 1 100
10 011 =0100 Бит знака равен
0, следовательно,
перенос результат поло-
жительный +4(10) в
ПК.

Указанные трудности привели к тому, что в современных ЭВМ абсолютное большинство


операций выполняется в дополнительном коде.

Дополнительный код
Дополнительный код (ДК) строится следующим образом. Сначала формируется обратный
код (ОК), а затем к младшему разряду (МЗР) добавляют 1. При выполнении
арифметических операций положительные числа представляются в прямом коде (ПК), а
отрицательные числа – в ДК, причем обратный перевод ДК в ПК осуществляется
аналогичными операциями в той же последовательности. На рис. 2.3 рассмотрена цепь
преобразований числа из ПК в ДК и обратно в двух вариантах.
Пример.

Число -5(10) перевести в ДК и обратно (первый вариант).

1 1 0 1 П К (-) 1 0 1 1 Д К (-)
1 0 1 0 О К (-) 1 1 0 0 Д К (-)
+ 1 + 1
1 0 1 1 Д К (-) 1 1 0 1 П К (-)

Пример.

Число -5(10) перевести в ДК и обратно (второй вариант).

0 101 м од. П К 1 0 1 1 Д К (-)


1 0 1 0 О К (-) 0 100 ДК
+ 1 + 1
1 0 1 1 Д К (-) 0 101 м од. П К

Сложение и вычитание в дополнительном коде


При выполнении арифметических операций в современных ЭВМ используется
представление положительных чисел в прямом коде (ПК), а отрицательных – в обратном
(ОК) или в дополнительном (ДК) кодах. Это можно проиллюстрировать схемой на рис. 2.4.
Общее правило. При алгебраическом сложении двух двоичных чисел, представленных
обратным (или дополнительным) кодом, производится арифметическое суммирование
этих кодов, включая разряды знаков. При возникновении переноса из разряда знака
единица переноса прибавляется к МЗР суммы кодов при использовании ОК и
отбрасывается при использовании ДК. В результате получается алгебраическая сумма в
обратном (или дополнительном) коде.

Рассмотрим подробнее алгебраическое сложение для случая представления


отрицательных чисел в ДК.

При алгебраическом сложении чисел со знаком результатом также является число со


знаком. Суммирование происходит по всем разрядам, включая знаковые, которые при
этом рассматриваются как старшие. При переносе из старшего разряда единица переноса
отбрасывается и возможны два варианта результата:

 знаковый разряд равен нулю: результат – положительное число в ПК;


 знаковый разряд равен единице: результат – отрицательное число в ДК.
Для определения абсолютного значения результата его необходимо инвертировать,
затем прибавить единицу.

Пример.

Вычислить алгебраическую сумму 58-23.


5 8 (1 0 )  0 0 1 1 1 0 1 0 (2 ) - ПК
- 2 8 (1 0 )  1 0 0 1 0 1 1 1 (2 ) - ПК Ч ис л о о тр иц а те ль но е - не о б хо -
1 1 1 0 1 0 0 1 (2 ) - ДК д и м о п е р е в е с т и в Д К (б ы с т р ы й
перевод)
0011 1010 П е р е но с из зна ко в о го р а зр я д а о тб р а сы в а е м .
+
1110 1001 Ч исло является полож ительны м в П К.
1  0 0 1 0 0 0 1 1 (2 ) ( П К ) = 3 5 (1 0 )
перенос

Пример.

Вычислить алгебраическую сумму 26-34.

. 2 6 (1 0 )  0 0 0 1 1 0 1 0 (2 ) - ПК
- 3 4 (1 0 )  1 0 1 0 0 0 1 0 (2 ) - ПК
Б ы стры й перевод
1 1 0 1 1 1 1 0 (2 ) - ДК
0001 1010 П е р е н о с из зн а ко в о го р а зр я д а о тс утс т-
+
1101 1110 вует. Ч исло отриц ательное в Д К , так как
0  1 1 1 1 1 0 0 0 (2 ) знаковы й разря д равен 1.
перенос

.В ы ч и с л и м р е з у л ь т а т , п р е о б р а з о в а в е г о и з Д К в П К :
1 1 1 1 1 0 0 0 (2 ) (Д К )
1000 0111 И нве р сия в се х р а зр я д о в , кр о м е зна ко в о го
+
1
1 0 0 0 1 0 0 0 (2 ) ( П К ) = - 8 (1 0 )

Пример.

Вычислить алгебраическую сумму -5-1.


- 5 (1 0 )  1 1 0 1 ( П К )  1 0 1 1 ( Д К )
- 1 (1 0 )  1 0 0 1 ( П К )  1 1 1 1 ( Д К )

1011 П е р е но с из зна ко в о го р а зр я д а о тб р о с ить .


+
1111 Ч исло о тр иц ате льно е в Д К , так ка к знаковы й
1  1010 (2 ) разряд равен 1.
перенос

З а пиш е м р е зуль та т, пр е о б р а зо в а в е го из Д К в П К :
1 0 1 0 (2 ) (Д К )
1101 И н в е р с и я з н а ч а щ и х р а з р я д о в (к р о м е з н а к о в о го )
+ 1
1 1 1 0 (2 ) ( П К ) = - 6 (1 0 )

1. Выполнить сложение

1 1011101+100111 11100001+111110 10110101+1000010


2 1010001+111010 10110101+110000 10110010+1011010
3 1011101+1000101 10011011+101010 11101110+1000100
4 1101010+1100100 10111111+110101 11001101+1010101
5 10111101+100001 11110000+101111 11001010+1000111
6 10011001+101100 10101101+111000 11001001+1101011
7 11110101+110010 10101001+110101 11111101+1011001
8 11111001+100011 11110101+111011 11101110+1101001
9 10101110+110000 11100000+100011 10111010+1101100
10 10111101+101010 10101010+111011 10111100+1100101
11 10111111+100101 10101011+110101 11101101+1000100
12 10001001+110001 10100101+110001 10101011+1001111
13 11010101+101110 11011101+101111 10101100+1100010

Сложить следующие числа в прямом ,обратном и дополнительном кодах в двоичной системе


счисления

5 8

12 -12

45 -54

22 23

-5 -2

-21 24

15 -19

35 6
25 -31

11 -24

-16 5

-9 24

-20 5

51 -49

23 -8

-42 -5

32 -34

33 -22