![]() | |
НПО Системы Безопасности (499)340-94-73 График работы: ПН-ПТ: 10:00-19:00 СБ-ВС: выходной ![]() ![]() |
Главная » Периодика » Безопасность 0 ... 36373839404142 ... 101 отрицательного числа ё обратный код достаточно каждую цифру числа заменить ее дополнением до единицы, что соответствует простой замене О на 1 и 1 на 0. В знаковом разряде кода ставится единица. Операция обращения записи отрицательного .числа в обратный код часто называется инвертированием. Однако для того чтобы не использовать термин «инвертирование» в двух различных смыслах (как . переход к обратному коду для двоично"й системы и как переход к коду числа с противоположным"знаком в симметричных системах счисления), мы в дальнейшем не будем называть инвертированием операцию перехода от прямого кода отрицательного числа к его «обратному коду. Для перехода к дополнительному коду, как и ранее, достаточно прибавить единицу в младший разряд обратного, кода числа. Для того чтобы избежать операции прибавления единицы, можно построить алгоритм перевода отрицательных двоичных чисел из •прямого кода- в дополнительный и обратно без использования в качестве промежуточного результата перевода в обратный код. Этот алгоритм состоит в следующем: для перевода прямого кода отрицательного числа в- его дополнительный код необходимо при просмотре прямого кода справа налево, начиная с его младших разрядов, оставить без изменения все разряды до первой единицы включительно, а все разряды, стоящие слева от этой единицы (кроме знакового), превратить в обратный код (т. е. заменить О, стоящие в этих- разрядах, на 1, и наоборот). Аналогичный алгоритм верен и для обратного перевода. Пример 2.4. Перевести в дополнительный код число (.х)2 = 0,110101. Осуществим этот перевод двумя способами: по универсальному алгоритму и с помощью метода, который мы только что описали. Переходим к обратному коду данного числа, [х] = 1.001010. Дополнительный код получаем из обратного, прибавляя к его последнему справа разряду одну единицу {х\= = 1.001011. Теперь воспользуемся методом непосредственного перехода от прямого кода числа к его дополнитель- ному коду. M„== 1.110101; Просматривая этот код, начиная с младших разрядов, обнаруживаем, что единица стоит в первом справа разряде. Для перехода к дополнительному коду оставляем эту единицу неизменной, а все цифры, стоящие слева от. нее, заменяем их дополнениями. Получаем [л;] = 1.001011. Применение специального метода преобразования числа в дополнительный код особенно выгодно при использовании сумматоров накапливающего типа (см. § 1.9), для которых время перевода числа в дополнительный код (или обратного перевода) уменьшается при использовании описанного метода в 1,7-г-2,4раза. Усложнения схемы сумматора при этом весьма незначительны. - Операция алгебраического сложения выполняется в дополнительном или обратном коде на основе правил, сформулированных в § 1.4. Пример 2.5. Найти {х) + {у)2 и (л:)2- {у)2 для чисел (л;)2 = 0,01101 и (j;)2 = -0,10110, используя при суммировании модифицированные дополнительные коды чисел. М„ = 00.01101 [xU =00.01101 " Ымд-11-01010 [-jL-oo.ioiio [-+3]мд= 11-10111 [.«--j;U= 01.00011 с учетом исправления переполнения при вычитании получаем (л: + У)2 = -0,01001 и (j(;-j;)2 = 0,10001. Рассмотрим теперь мето, позволяющий в "двоичной системе производить операцию алгебраического сложения непосредственно в прямом коде*. . . . . Этот метод будет излагаться для случая естественной.формы представления чисел. Однако его употребление для" случая полулогарифмического представления не требует практически никаких изменений. ° . Операция алгебраического сложения распадается на две операции: определения модуля результата операции и определение знака результирующего числа. Определение модуля результата операции зависит от комбинации знаком слагаемых. Если знаки слагаемых совпадают между собой, то модуль результата есть сумма модулей слагаемых* в противном случае модуль резулйата есть модуль ч разности модулей слагаемых. Поэтому для осуществления операции * Описываемый метод предложен в Институте кибернетики АН Грузинской ССР...... . . .-• . , : ,л -.Л23 алгебраического сложения необходимо уметь реализовать три операции: арифметическое сложение (сложение двух положительных чисел), нахождение ь1одуля разности двух положительных чисел и определение знака результата по анализу знаков чисел, участвующих в операции, и их модулей. Рассмотрим сначала операцию арифметического суммирования. Для организации операции произведем разбиение слагаемых на специальные группы разрядов. Для разбиения слагаемые просматриваются справа налево, начиная с младшего разряда. При каждом просмотре оценивается пара (х/, yi), стоящая в i-м разряде обоих слагаемых. Просмотр.происходит до тех пор, пока впервые не встречаются комбинации (1,1). При появлении этой комбинации все разряды, начиная с п-го по г-й (разряд, где встретилась комбинация (1,1)) включительно, объединяются в группу, которая в дальнейшем называется /7-группой. Заметим, что р-группа может состоять и из одного разряда, если первый просматриваемый разряд уже дает комбинацию (1,1). После выделения р-группы просмотр продолжается до первой встреченной комбинации (О, 0). Ъсе разряды, стоящие слева от р-групп.1, до разряда, давшего комбинацию (О, 0), включительно образуют группу разрядов, которая в дальнейшем называется -группой. После выделения д-группы вновь начинает выделяться р-группа, и т. д. Выделение групп заканчивается, когда будет просмотрен старший числовой разряд слагаемых (знаковые разряды в просмотре не участвуют). Независимо от комбинации цифр слагаемых в первом числовом разряде этот разряд замыкает ту группу, которая выделялась на последнем этапе разбиения. После разбиенияна группы в каждой группе происходит поразрядная операция по следующим правилам:
Полученный после этого результат есть арифметическая cyuui исходных чисел*. Пример 2.6. Найти арифметическую сумму чисел <A;>2i= = 0,10110010011 и <j>3 = 0,00001110110. Для выделения групп запишем оба слагаемых так, чтобы их соответствующие разряды находились на одной вертикали
Вертикальная черта отделяет одну выделенную группу от другой. Применяя правила сложения для групп, получим окончательный результат в виде<л;+J>2= 0,11000001001. Теперь перейдем к рассмотрению операции взятия модуля от разности двух положительных чисел (модуля разности модулей). . * Справедливость .этого утверждения может быть доказана читателем самостойтельнона основе анализа сущности операций для грунй и правил разбиения на группы. 0 ... 36373839404142 ... 101 |