Арифметические операции в различных системах исчисления. Основной операцией, которая используется в цифровых устройствах при различных вычислениях, является операция алгебраического сложения чисел сложения, в котором могут участвовать как положительные, так и отрицательные числа . Вычитание легко сводится к сложению пут м изменения на обратный знака вычитаемого. Операции умножения и деления также выполняются с помощью операции сложения и некоторых логических действий.
Поэтому именно с операции сложения начн м рассмотрения способов выполнения арифметических операций. При записи кода числа знак числа будем представлять полужирными цифрами 0 для положительных чисел и 1 для отрицательных чисел . Положение точки в числе показывать не будем. Сложение положительных двоичных чисел. Выполнение этой операции покажем на примере Переносы Первое слагаемое N1 Второе слагаемое
N1 Сумма N N1 N0 Цифры разрядов суммы N N1 N2 формируются последовательно, начиная с младшего разряда. Цифра младшего разряда суммы образуется суммированием цифр младших разрядов слагаемых. При этом, кроме цифры разряда суммы, формируется цифра переноса в следующий, более старший разряд. Таким образом, в разрядах, начиная со второго, суммируются три цифры6 цифры соответствующего разряда
слагаемых и перенос, поступающий в данный разряд из предыдущего. Перенос равен 1 во всех случаях, когда результат суммирования цифр в разряде равен или больше р 2 р основание системы счисления . При этом в разряд суммы записывается цифра, на р единиц т.е. на две единицы меньшая результата суммирования. Алгебраическое сложение с использованием дополнительного кода. Для пояснения сущности излагаемого ниже метода рассмотрим следующий пример. Пусть требуется сложить два десятичных числа N1 0 831 и N2 1 376. Так как второе слагаемое отрицательное число, искомый результат может быть получен и с использованием последовательности действий с передачей переносов в старшие разряды, которая используется при сложении положительных чисел. Для этого достаточно отрицательное число 1 376 предварительно преобразовать в так называемый дополнительный код следующим образом во всех разрядах, кроме знакового, запишем дополнение
до 9 к цифрам этих разрядов и затем прибавим единицу в младший разряд. Число N2 1 376 в дополнительном коде есть N2 доп 624. Далее произвед м сложение по правилам сложения с передачей переносов в старшие разряды т.е. так, как складываются положительные числа Переносы 1 Первое слагаемое N1 Второе слагаемое N2 доп 4 Сумма N
N1 N2 0 4 5 5 При сложении складываются и двоичные цифры знаковых разрядов с отбрасыванием возникающего из этого разряда переносом. Как видим, получен правильный результат действительно 831 376 455 . В двоичной системе счисления дополнительный код отрицательного числа формируется по следующему правилу инвертируются пут м замены 0 на 1 и 1 на 0 цифры всех разрядов, кроме знакового, и в младший разряд прибавляется единица. Например, если N 1 10110, Nдоп 1 01010.
Обратное преобразование из дополнительного кода в прямой код производится по тому же правилу. Суммирование десятичных чисел. Рассмотрим вначале операцию суммирования в одном разряде десятичных чисел, т.е. суммирование двух десятичных цифр и единицы переноса, которая при суммировании чисел может поступить из предыдущего десятичного разряда. Способ суммирования десятичных цифр зависит от того, какой двоичный код выбран для представления десятичных цифр. Двоичные представления десятичных цифр суммируются по обычным правилам сложения двоичных чисел. Если полученная сумма содержит десять или более единиц, то формируется единица переноса, передаваемая в следующий десятичный разряд, а из суммы вычитаются десять единиц. Полученный результат есть цифра соответствующего разряда суммы. Наличие в полученной сумме десяти или более единиц выявляется по следующим признакам появление переноса
из разряда 8, возникающего при суммировании цифр наличие единиц одновременно в разрядах 8 и 4 либо 8 и 2 в полученной сумме. При этом требуется коррекция суммы прибавлением к ней шести единиц числа 01102 . Умножение двоичных чисел. Операция умножения чисел, представленных в форме с фиксированной точкой, включает в себя определение знака и абсолютного значения произведения. Определение знака произведения. Знаковый разряд произведения может быть получен суммированием знаковых
разрядов сомножителей без формирования переноса так называемым суммированием по модулю 2 . Действительно, при совпадении цифр знаковых разрядов сомножителей 0 и 0 , либо 1 и 1 их сумма по модулю 2 равна 0, т.е. соответствует знаковому разряду произведения двух сомножителей, имеющих одинаковые знаки при несовпадении цифр знаковых разрядов эта сумма будет равна 1, что также соответствует знаковому разряду произведения двух сомножителей с разными знаками. Определение абсолютного значения произведения.
Абсолютное значение произведения получается пут м перемножения чисел без уч та их знаков. Произвед м умножение чисел 11012 и 10112 . 1 1 0 1 множимое х 1 0 1 1 множитель 1 1 0 1 1-е частичное произведение 1 1 0 1 2-е частичное произведение 0 0 0 0 3-е частичное произведение 1 1 0 1 4-е частичное произведение 1 0 0 0 1 1 1 1 произведение Как видно из примера, в процессе выполнения операции умножения формируются частичные произведения произведения множимого на цифры разрядов множителя , которые суммируются с соответствующими сдвигами друг относительно друга. В цифровых устройствах процессу суммирования частичных произведений придают последовательный характер формируется одно из частичных произведений, к нему соответствующим сдвигом прибавляется следующее частичное произведение и т.д пока не окажутся просуммированными все частичные произведения. Этот процесс суммирования можно начинать с младшего или старшего частичного произведения.
При умножении с суммированием частичных произведений начиная со старшего частичного произведения все частичные произведения суммируются с требуемыми сдвигами относительно друг друга, благодаря чему образуется ранее привед нный результат умножения чисел. При умножении целых чисел для фиксации произведения в разрядной сетке должно предусматриваться число разрядов, равное сумме числа разрядов множителя и множимого. При выполнении операции умножения с суммированием частичных произведений, начиная с младшего частичного
произведения, если требуется сохранять все разряды в произведении, то в устройстве, формирующем произведение, необходимо иметь число разрядов, равное сумме числа разрядов множителя и множимого. При умножении дробных чисел часто в произведении требуется сохранять то же число разрядов, что и в множимом. В таком приближенном представлении результата не фиксируются цифры разрядов, выдвигаемые правее при сдвигах. Таким образом, цифры четыр х младших разрядов окажутся потерянными.
Может быть проведено округление по правилу если старший из отбрасываемых результатов содержит единицу, то к младшему из сохраняемых разрядов прибавляется единица. Одним из эффективных алгоритмов умножения является алгоритм Бута. Он не предусматривает отдельных операций над знаковыми разрядами и модулями сомножителей. При выполнении действий по этому алгоритму в получаемом результате образуется произведение со знаковым разрядом. Деление двоичных чисел. Будем рассматривать операцию алгебраического сложения чисел, представленных в форме с фиксированной точкой. При этом выполнение операций содержит действия, связанные с определением частного, и действия, связанные с определением модуля частного. Знак частного может быть найден тем же при мом, что и знак произведения в рассмотренной выше операции умножения с отделением знаковых разрядов. Поэтому ниже рассматривается только нахождение модуля частного.
На примере эта операция выглядит так. Пусть после отделения знаковых разрядов модули делимого и делителя представляются соответственно числами а 0,10010 и в 0,10110. Встречающуюся операцию вычитания числа заменим прибавлением числа -в, представленного в дополнительном коде -в доп 1,01010. а 0 , 1 0 0 1 0 0, 1 0 1 1 0 -в доп 1 , 0 1 0 1 0 с lt 0 0, 1 1 0 1 0 частное с 1 , 1 1 1 0 0
Сдвиг влево 1 , 1 1 0 0 0 в 0 , 1 0 1 1 0 с gt 0 с 0 , 0 1 1 1 0 Сдвиг влево 0 , 1 1 1 0 1 -в доп 1 , 0 1 0 1 0 с gt 0 с 0 , 0 0 1 1 0 Сдвиг влево 0 , 0 1 1 0 0 -в доп 1 , 0 1 0 1 0 с lt 0 с 1 , 1 0 1 1 0 Сдвиг влево 1 , 0 1 1 0 0 в 0 , 1 0 1 1 0 с gt 0 с 0 , 0 0 0 1 0 сдвиг влево 0 , 0 0 1 0 0 -в доп 1 , 0 1 0 1 0 с lt 0 с 1 ,
0 1 1 1 0