Арифметические операции, выполняемые в позиционных СС
Все операции в компьютере выполняются в арифметико-логическом устройстве (АЛУ). Числа, которые участвуют в операциях, называются операндами. Основная операция, которую выполняет АЛУ, операция сложения. Операции сложения в АЛУ выполняет функциональный узел –сумматор.
Операция вычитания заменяется сложением операндов в обратном или дополнительном кодах.
Операции умножения и деления сводятся к многократному сложению и переносам.
В вычислительной технике наибольшее применение имеет операция сложения. Вычисления выполняются по следующим правилам:
· операция сложения выполняется поразрядно, начиная с младших разрядов в слагаемых;
· в каждом одноименном разряде слагаемых суммируются соответствующие цифры и перенос из предыдущего разряда суммы;
· если сумма цифр одноименных разрядов слагаемых и переноса меньше основания системы, то перенос в следующий разряд равен нулю, если равна или больше — то перенос равен единице.
Цифры суммы могут быть определены только последовательно, начиная с младших разрядов. Это имеет принципиальное значение, так как в соответствующих суммирующих схемах вычислительной машины операции суммирования также должны выполняться последовательно, а это существенно увеличивает время вычисления суммы.
Ø Поразрядные операции.
Поразрядные операции — операции, которые осуществляются над одноименными разрядами чисел независимо от соседних разрядов. Рассмотрим некоторые из них.
Поразрядное дополнение (или операция получения инверсного кода) — операция, по которой набор х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 разрядов вправо преобразуется в набор:
00….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 10 – 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