Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практическое занятие НГ ИТОГОВОЕ.doc
Скачиваний:
7
Добавлен:
08.11.2018
Размер:
534.53 Кб
Скачать

Практическое занятие 4. Двоичная арифметика

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

При этом числа представляются в прямом, обратном или дополнительном кодах.

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

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

Дополнительный код получается из обратного прибавлением единицы.

Сложение двоичных чисел

Сложение выполняется, начиная с младшего разряда, по правилам:

0 + 0 = 0

0 + 1 = 1

1 + 0 = 1

1 + 1 = 10

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

Пример: Вычислить сумму А+В, если А=60 В=25

Переведем оба числа в двоичную систему счисления и получим прямые коды для них. Для наглядности и так как числа небольшие возьмем 8-ми разрядные сетки.

6010= 1111002

2510= 110012

1 1

+

0

0 1 1 1 1 0 0

Прямой код числа 60

0

0 0 1 1 0 0 1

Прямой код числа 25

0

1 0 1 0 1 0 1

Прямой код результата

Результат положителен, переведем его в 10-ю систему:

1 0 1 0 1 0 1(2) =1*26 +0*25 +1*24 + 0*23 +1*22 +0*21 +1*20= 64+16+4+1=85

6 5 4 3 2 1 0

Вычисление разности.

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

Рассмотрим пример: А-В= 988,15 – 547,58.

Данный пример можно представить, как сложение двух чисел: положительного А=988,15 и отрицательного В=-547,58. В полученном выражении В – отрицательное и по абсолютной величине меньше чем А.

Сложение обратных кодов.

В этом случае поступают следующим образом.

Отрицательное число В переводится из прямого в обратный код и складывается с числом А. После сложения в знаковом разряде получаемого числа появляется единица, которая переносится в младший разряд числа и складывается.

0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1. 1 0 0 1 0 1 0

+

1

1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 1 1 0 0. 0 1 1 0 1 0 1

0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 1 0 0. 0 0 1 0 0 1 1

+

10

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0 0 0. 1 0 0 1 0 0 0

1

0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0 0 0. 1 0 0 1 0 0 1

Впр

Воб

Апр

Сложение дополнительных кодов.

Число В переводится в дополнительный код, который получается путем образования обратного кода с последующим прибавлением единицы к его младшему разряду.

Число В в обратном, дополнительном коде:

0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1. 1 0 0 1 0 1 0

Впр

+

1

1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 1 1 0 0. 0 1 1 0 1 0 1

Воб

 

1

1

1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 1 1 0 0. 0 1 1 0 1 1 0

ВДоп

После этого вычисляется А+ВДоп. Получаемая в знаковом разряде дополнительная единица отбрасывается:

+

1

111111111111110111011100.0110110

0

000000000000001111011100.0010011

10

000000000000000110111000.1001001

0

000000000000000110111000.1001001

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

А-В=988,15-547,58=440,57

Перевод числа с помощью схемы Горнера:

1 1 0 1 1 1 0 0 0,1 0 0 1 0 0 1(2) =1*28+1*27+1*25+1*24+1*23+1*2-1+1*2-4+1*2-7

8 7 6 5 4 3 2 1 0 -1 -2 -3 -4 -5 -6 -7

≈440,57

Вычисление разности В – А (А>B).

Сложение обратных кодов.

Отрицательное число А переводится из прямого в обратный код и складывается с числом В. Затем биты цифровой части результата инвертируется.

0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 1 0 0. 0 0 1 0 0 1 1

+

1

1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 0 0 0 1 1. 1 1 0 1 1 0 0

0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1. 1 0 0 1 0 1 0

1

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0 0 0 1 1 1. 0 1 1 0 1 1 0

1

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0 0 0. 1 0 0 1 0 0 1

Апр

Аоб

Впр

Сложение дополнительных кодов.

Число А переводится в обратный дополнительный код:

0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 1 0 0. 0 0 1 0 0 1 1

Апр

+

1

1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 0 0 0 1 1. 1 1 0 1 1 0 0

Аоб

 

1

1

1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 0 0 0 1 1. 1 1 0 1 1 0 1

АДоп

После этого вычисляется АДоп+В, затем в прямой код инвертруются биты цифровой части результата и к младшему разряду прибавляется единица.

+

1

1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 0 0 0 1 1. 1 1 0 1 1 0 1

АДоп

0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1. 1 0 0 1 0 1 0

Впр

1

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0 0 0 1 1 1. 0 1 1 0 1 1 1

+

1

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0 0 0. 1 0 0 1 0 0 0

1

1

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0 0 0. 1 0 0 1 0 0 1

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

1 1 0 1 1 1 0 0 0.1 0 0 1 0 0 1 (2) =1*28 + 1*27 + 1*25 + 1*24 + 1*23 + 1*2-1 +

8 7 6 5 4 3 2 1 0 -1 -2 -3 -4- 5 -6 -7

1*2-4+1*2-7 ≈ -440,57

Вычисление -А-В.

В данном примере А и В – отрицательные.

В обратном коде.

Оба числа А и В переводятся в обратный код и складываются. Полученный первоначально неправильный результат компьютер исправляет переносом единицы из знакового разряда в младший разряд суммы. Затем биты цифровой части результата инвертируется в прямой код.

+

1

1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 0 0 0 1 1. 1 1 0 1 1 0 0

Аоб

1

1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 1 1 0 0. 0 1 1 0 1 0 1

Воб

+

11

1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0. 0 1 0 0 0 0 1

 

1

1

1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0. 0 1 0 0 0 1 0

1

0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 1 1 1 1 1. 1 0 1 1 1 0 1

В обратном дополнительном коде.

Оба числа А и В переводятся в обратный дополнительный код и складываются. В результате получается дополнительный код суммы

(-А-В)Доп. При этом дополнительная единица в знаковой части отбрасывается. Полученный дополнительный код переводится в обратный вычитанием единицы, а затем цифровая часть результата инвертируется в прямой код.

+

1

1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 0 0 0 1 1. 1 1 0 1 1 0 1

АДоп

1

1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 1 1 0 0. 0 1 1 0 1 1 0

ВДоп

-

1

1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0. 0 1 0 0 0 1 1

(-А-В)Доп

1

1

1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0. 0 1 0 0 0 1 0

(-А-В)Об

1

0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 1 1 1 1 1. 1 0 1 1 1 0 1

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

- А - В = -988,15-547,58 = -1535,73

Перевод числа с помощью схемы Горнера:

1 0 1 1 1 1 1 1 1 1 1. 1 0 1 1 1 0 1(2) = - (1*210 +1*28 +1*27 +1*26 + 1*25 +

10 9 8 7 6 5 4 3 2 1 0 -1 -2 -3 -4 -5 -6 -7

+1*24 + 1*23 + 1*22 + 1*21 +1*20 +1*2-1 + 1*2-3 + 1*2-4 + 1*2-5 + 1*2-7 )=

=-(1024+256+128+64+32+16+8+4+2+1+0,5+0,125+0,0625+ 0,03125+0,0078125) ≈ -1535,73

Умножение двоичных чисел выполняется путём образования частичных произведений и последующего их суммирования. В соответствии с табл.1.2 каждое частичное произведение равно нулю, если в соответствующем разряде множителя стоит нуль, или равно множимому, сдвинутому на соответствующее число разрядов влево, если разряде множителя стоит единица. Положение запятой определяется так же, как при умножении десятичных чисел.

Деление двоичных чисел сводится к операциям умножения и вычитания.

Для представления десятичных чисел в ЭВМ используют двухпозиционные элементы, из которых построена ЭВМ.

Таблица 3 – Арифметические операции над одноразрядными двоичными числами

Сложение

Умножение

0 + 0 = 0

0 х 0 = 0

0 + 1 = 1

0 х 1 = 0

1 + 0 = 1

1 х 0 = 0

1 + 1 = 10

1 х 1 = 1

Вычисление произведения А*В

Умножение в двоичной системе

*

0

1

0

0

0

1

0

1

Во многих компьютерах умножение производится как последовательность сложений и сдвигов. Для этого в арифметическо-логическом устройстве (АЛУ) имеется регистр, называемый накапливающим сумматором, который до начала выполнения операции содержит число ноль. В процессе выполнения операции в нем поочередно размещаются множимое и результаты промежуточных сложений, а по завершении операции — окончательный результат.

Другой регистр АЛУ, участвующий в выполнении этой операции, вначале содержит множитель. Затем по мере выполнения сложений содержащееся в нем число уменьшается, пока не достигнет нулевого значения.

Для иллюстрации умножим

А = 988,15(10)= 1 1 1 1 0 1 1 1 0 0. 0 0 1 0 0 1 1(2) на

В = 547,58(10) = 1 0 0 0 1 0 0 0 1 1. 1 0 0 1 0 1 0(2)

Операция умножения состоит из ряда последовательных операций сложения частных произведений. Операциями сложения управляют разряды множителя, а именно: если в каком-то разряде множителя находится единица, то к сумме частных произведений добавляется множимое с соответствующим сдвигом; если в разряде множителя — нуль, то множимое не прибавляется.

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

*

Множимое 1 1 1 1 0 1 1 1 0 0. 0 0 1 0 0 1 1

Множитель 1 0 0 0 1 0 0 0 1 1. 1 0 0 1 0 1 0

+

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

1 1 1 1 0 1 1 1 0 0 0 0 1 0 0 1 1

1 1 1 1 0 1 1 1 0 0 0 0 1 0 0 1 1

+

1 0 0 1 1 0 1 0 0 1 1 0 0 1 0 1 1 1 1 1 0

1 1 1 1 0 1 1 1 0 0 0 0 1 0 0 1 1

+

1 0 0 0 1 1 1 0 1 1 0 1 0 0 0 1 0 1 1 1 1 1 1 0

1 1 1 1 0 1 1 1 0 0 0 0 1 0 0 1 1

+

1 1 0 0 0 0 1 0 1 1 1 0 1 1 0 1 0 1 1 1 1 1 1 1 0

1 1 1 1 0 1 1 1 0 0 0 0 1 0 0 1 1

+

1 1 0 1 1 1 0 0 1 1 1 1 1 0 1 1 0 1 1 1 1 1 1 1 1 0

1 1 1 1 0 1 1 1 0 0 0 0 1 0 0 1 1

+

1 0 0 0 1 0 0 1 0 1 0 1 0 1 0 0 0 1 1 1 0 1 1 1 1 1 1 1 1 0

1 1 1 1 0 1 1 1 0 0 0 0 1 0 0 1 1

1 0 0 0 0 1 0 0 0 0 0 1 1 0 1 0 0 0 0 0.0 1 1 1 0 1 1 1 1 1 1 1 1 0

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

А*В = 988,15*547,58=541091,177

Перевод числа с помощью схемы Горнера:

1 0 0 0 0 1 0 0 0 0 0 1 1 0 1 0 0 0 0 0. 0 1 1 1 0 1 1 1 1 1 1 1 1 0=

19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 -1 -2 -3 -4 -5 -6 -7 -8 - 9 -10 -11 -12 -13 -14

=1*219+ 1*214 + 1*28 + 1*27 + 1*25 + 1*2-2+ 1*2-3 1*2-4 1*2-6 1*2-7+ 1*2-8 + 1*2-9 +

+ 1*2-10+ 1*2-11+ 1*2-12+1*2-13 = 524288+16384+256+128+32+0,125+0,0625+0,015625+

+0,0078125+0,00390625+0,001953125+0,0009765625+0,0004882125+0,000244140625++0,0001220703125≈541091,177

Задания:

  1. Дано целое десятичное число Х=-5010. Его 8-битный дополнительный код равен 11001110, 1001110 или 1101111. 10110001?

  2. Дополнительный код числа 310 в однобайтовом формате имеет вид: 01111100, 00000011, 01111101 или 10000011? Выберите правильный ответ.

  3. Определите, в какой системе счисления записано математическое выражение 122+2=201 (В 4-ной, 2-й, 8-й, 3-й)

  4. При сложении 8-х чисел 2…7 получается восьмеричное число 1064. Это значит, что в первом слагаемом пропущена цифра…(7, 5, 4, 6)

  5. Равенство 14+3=22 будет истинным в системе счисления с основанием … (7, 5, 10, 2)

  6. При вычитании из 2-го числа 1…0 двоичного числа 1011, получено двоичное число 11. Это значит, что в уменьшаемом пропущены цифры…(11, 10,00, 01)