Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Гл.2 Сх..docx
Скачиваний:
19
Добавлен:
12.11.2019
Размер:
291.62 Кб
Скачать

2.4 Арифметические основы эвм

      1. Арифметические операции, выполняемые в позиционных сс

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

Операция вычитания заменяется сложением операндов в обратном или дополнительном кодах.

Операции умножения и деления сводятся к многократному сложению и переносам.

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

  • операция сложения выполняется поразрядно, начиная с младших раз­рядов в слагаемых;

  • в каждом одноименном разряде слагаемых суммируются соответ­ствующие цифры и перенос из предыдущего разряда суммы;

  • если сумма цифр одноименных разрядов слагаемых и переноса мень­ше основания системы, то перенос в следующий разряд равен нулю, если равна или больше — то перенос равен единице.

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

  • Поразрядные операции.

Поразрядные операции — операции, кото­рые осуществляются над одноименными разрядами чисел незави­симо от соседних разрядов. Рассмотрим некоторые из них.

Поразрядное дополнение (или операция получения инверсного кода) — операция, по которой набор х0 х1 х2 … хn превращается в набор , где = 1 – xn, применяется для получения об­ратного кода отрицательного числа.

Поразрядное сложение двух чисел заключается в сложении од­ноименных разрядов чисел по модулю 2 в соответствии с правилом

0 0 = 0, 0 1 = 1, 1 0=1, 1 1=0;

применяется для сравнения двух чисел на равенство.

Поразрядное логическое сложение заключается в сложении од­ноименных разрядов двух чисел в соответствии с правилом

0 0 = 0, 0 1 = 1, 1 0= 1, 1 1 = 1, где символ означает логическое сложение.

Поразрядное логическое умножение заключается в умножении одноименных разрядов двух чисел в соответствии с правилом

0 ^ 0 = 0, 0 ^ 1= 0, 1 ^ 0 = 0, 1 ^ 1 = 1. где символ ^ означает логическое умножение.

Поразрядные операции логического сложения и умножения при­меняют для модификации команд и чисел.

  • Операции сдвига.

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

Логический сдвиг — смещение всей числовой последовательно­сти (слова), включая разряд знака, при котором в освободившиеся при сдвиге k разрядов устанавливаются нули.

Например, исходный набор х0 х1 х2 … хn при сдвиге на k разрядов вправо преобразуется в набор:

0 0….0 х0 х1 х2 … хn , где k — константа сдвига.

k

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

Арифметический сдвиг — сдвиг всей числовой последовательно­сти (слова) без изменения позиции знака числа. Различают две разновидности арифметического сдвига: простой и модифицирован­ный. Простой арифметический сдвиг эквивалентен умножению числа, представленного в определенной системе счисления, на ос­нование этой системы счисления, возведенное в степень (положи­тельную или отрицательную), равную величине сдвига (константе сдвига).

Простой арифметический сдвиг влево для чисел в разных кодах характеризуется следующими особенностями.

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

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

Пример:

Выполнить простой арифметический сдвиг влево на один разряд чисел, заданных в разных кодах: х1 = 1.0011; х2 = 1.10001; xз = 1.1101.

Константа сдвига: kд = 2 kд=1 kд = 2

После сдвига влево получим: х1 = 1.0110; х2 = 1.0001; х3 = (1) 1.1011,

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

Для прямого кода вправо сдвигается только цифровая часть числа.

Для дополнительного и обратного кодов вправо сдвигается вся числовая последовательность, цифра знакового разряда перемеща­ется в старший цифровой разряд и в то же время восстанавливает­ся в знаковом разряде.

При сдвиге вправо разряды чисел, выходящие за правую гра­ницу разрядной сетки, теряются. Так как число разрядов в разряд­ной сетке конечно, то в результате сдвигов может образоваться «машинный» нуль (исключением является результат неограничен­ного сдвига вправо отрицательного числа в дополнительном коде).

Пример:

Выполнить простой арифметический сдвиг вправо на один разряд чисел, заданных в разных кодах: х1 = 1.00110; х2 = 1.10110; х3 = 1.11010.

После сдвига вправо получим: х1'= 1.00011; х2 = 1.11011; х3' = 1.11101.

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

  • Арифметические операции над числами в двоичной СС

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

Правило сложения

0 + 0 = 00

0 + 1 = 01

1 + 0 = 01

1 + 1 = 10

Перенос 1 в ст. разряд

Правило вычитания

0 – 0 = 0

1 – 0 = 1

1 – 1 = 0

1 0 – 1 = 1

Заем 1 из ст. разряда

Правило умножения

0 х 0 = 0

0 х 1 = 0

1 х 0 = 0

1 х 1 = 1

Правило сложения по модулю 2

0 + 0 = 0

0 + 1 = 1

1 + 0 = 1

1 + 1 = 0

Рассмотрим несколько примеров выполнения арифметических дей­ствий над многоразрядными числами в двоичной СС.

Примеры.

  1. Сложить два двоичных числа А=10100110 и В=00101111 (16610 + 4710):

Сложение двух многоразрядных двоичных чисел проводится поразрядно с учетом единиц переполнения от предшествующих разрядов.

Перенос в ст.разр. 1 1 1 1 11

1-е слагаемое 1 0 1 0 0 1 1 0 166

2-е слагаемое + 0 0 1 0 1 1 1 1 + 47

Сумма 1 1 0 1 0 1 0 1 215

Проверка: 110101012 = 1•27+1•26+0•25+1•24+0•23+1•22+0•21+1•20 =21510

  1. Вычесть два двоичных числа А=10101 и В=1010 (16610 - 4710):

Вычитание многоразрядных двоичных чисел, аналогично сложению, начинается из младших разрядов. Если занять единицу в старшем разряде, образуются две единицы в младшем разряде.

Заем из ст.разр 1 1 1 1 1 1 1 1

Число 1 0 1 0 0 1 1 0 166

Вычитаемое - 0 0 1 0 1 1 1 1 - 47

Разность 1 1 1 0 1 1 1 119

Проверка: 11101112 = 1•26+1•25+1•24+0•23+1•22+1•21+1•20 =11910

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

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

  1. Умножить два числа 10111.012 и 10.112 (23.2510 х 2.7510):

Умножение представляет собой многоразовое сложение промежуточных сумм и сдвиги.

Множимое 10111.01 23.25 х 2.75 = 63.937510

Множитель х 10.11

1011101

1011101

1011101___

Произведение 111111.1111

Проверка: 111111.11112=1∙25+1∙24+1∙23+1∙22+1∙21+1∙20+1∙2-1+1∙2-2+1∙2-3+1∙2-4=

= 32+16+8+4+2+1+0,5+0.25+0.125+0.0625=63.937510

  1. Разделить число 1101011102 на 1010 2 (43010 : 1010):

Процесс деления состоит из повторяющихся операций вычитания.

Делимое 110101110 |_1010

Делитель - 1010 101011 -частное от деления

1101

- 1010

1111

- 1010

1010

-1010

0000

Проверка: 430 : 10 = 43(10)

Действительно: 101011 = 1 • 25 + 0 • 26 + 1 • 25 + 0 • 22 + 1 • 21 + 1 • 20 = 43.