Материал: Алгоритмический язык Turbo Pascal 7.0. Юршин Е.Д., Рог А.И

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

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

В ЭВМ с целью упрощения арифметических операций применяются специальные коды для представления чисел. При помощи этих кодов

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

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

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

Положительные числа представляются в ЭВМ в прямом коде. Прямым кодом числа А называется само это число, записанное с единицей в знаковом разряде, если оно отрицательно, и с нулем, если положительно. Например, прямым кодом числа А= +10011 будет 110011.

Для представления отрицательных чисел в ЭВМ применяют прямой, обратный и дополнительный коды. Для получения обратного кода числа А надо все единицы числа А заменит на нули,, а все нули числа А заменить на 1, т.е. произвести инверсию. В знаковом разряде поставить нуль, если число положительное» и единицу, если число отрицательное; А= -

10011, Аобр=101100,

Для получения дополнительного кода числа А надо все

нули числа А заменить единицами, единицы - нулями и к младшему знаковому разряду прибавить единицу: А= -10011, Адоп=101101.

Модифицированный прямой, обратный и дополнительный коды отличаются от побочных кодов только выделением двух разрядов для кодирования знака числа например:

А= +10101, Аобр==0001010, Адоп.=0001011.

Выделение под знак двух разрядов позволяет фиксировать переполнение в ЭВМ, которое заключается в том, что результат сложения, например, двух n

разрядных чисел будет иметь n +1 разрядов. Поскольку машина оперирует

только с n-разрядными числами, то N+1 разряд теряется и результат получается неверным. Использование модифицированных кодов позволяет установить факт переполнения.

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

отрицательные - в обратном порядке п производится арифметическое суммирование этих кодов, включая разряды знаков, которые при этом

рассматриваются как старшие разряды. При возникновении переноса из разряда знака единица переноса прибавляется к младшему разряду суммы кодов.

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

переноса отбрасывается.

В результате получается алгебраическая сумма в прямом коде, если эта сумма положительная, и в обратном коде если она отрицательна.

Правило обнаружения переполнения. При алгебраическом сложении - (вычитании) двух двоичных чисел с использованием

прямого кода для представления положительных и дополнительного (обратного) кода для представления отрицательных чисел признаком переполнения является наличие переноса в знаковый разряд суммы при отсутствии переноса из еѐ знакового разряда (положительное переполнение) или наличие переноса из знакового разряда суммы при отсутствии переноса в ее знаковый разряд. (отрицательное переполнение). Если и в знаковый и из знакового разряды суммы одновременно есть переносы или их нет, то переполнение отсутствует. В случае положительного переполнения результат операции положительный, а в случае отрицательного переполнения - отрицательный.

Пример 1,

А1=1011, А2=1101, найти А1+А2.

Числа А1, А2 - положительные, значит эти числа складываются в прямом коде:

А1пр.=1011,А2пр=001101

+001011

001101

---------------

011000

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

Пример 2.

А1=1011, А2= -1001, найти А1+А2

Положительное число А1 складывается в прямом коде, отрицательное А2 - в обратном или дополнительном.

+А1пр = 001011

+А1пр =

001011

 

А2пр = 010110

А2доп =

010111

 

-----------------------

-----------------

-------

 

100001 → 000010

100010 →

000010

 

первая единица прибавляется к

 

первая единица отбрасываразряду

 

ется к младшему

 

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

Пример 3.

А1= -1011, А2=1001,найти А1+А2

+А1обр= -010100

+А1доп. =

010101

 

А2пр= 001001

А2доп. =

010111

 

 

-----------------------

----------------------

---

 

 

101010

001011

101100

001100

 

 

первая единица прибавляется

первая единица

отбрасывается

 

к младшему разряду

 

При сложении А1и А2 переполнение отсутствует и признаком этого является отсутстствие единицы переноса в знаковый разряд и из знакового разряда.

Получившаяся сумма отрицательна и записана в обратном (дополнительном) кодах.

Пример 4.

А1 = -1011, А2 = - 1001, найти А1+А2.

+А1обр.= 010100

+А1доп.=

010101

 

 

А2обр.=010110

А2доп.=

010111

 

 

------------------------

---------------------

--

 

 

101010

001011

101100

001100

 

 

первая единица прибавляется

первая единица

отбрасывается

 

к младшему разряду

 

Источник: https://studfile.net/preview/16565609/