Реферат: Выполнение операций алгебраического сложения и сдвига в ЭВМ

--PAGE_BREAK--1.1.2 Сложение в прямом коде
Правила сложения чисел в прямом коде не отличаются от обычных правил сложения, т.е. если оба слагаемых имеют одинаковые знаки, то их числовые разряды складываются, а сумме присваивается знак одного из них. Если слагаемые имеют разные знаки, то из числовых разрядов большего по абсолютной величине числа вычитается меньшее, а сумме приписывается знак большего из слагаемых. При этом числовые разряды кода обрабатываются отдельно от знаковых, так как последние не имеют веса.

Рассмотрим возможные 4 случая получения суммы чисел в прямом коде.
1) А0, В0, С0.

А=+0,101001        В=+0,000101

Апр=0,101001       Впр=0,000101                 Спр=А+В

+0,101001

 0,000101

 0,101110

2) А0, В‹0, С0.

А=+0,101001        В=-0,000101

Апр=0,101001       Впр=1,000101                 Спр=А-|В|

-0,101001

 1,000101

 0,100100

3) А‹0, В0, С‹0.

А=-0,101001         В=+0,000101

Апр=1,101001       Впр=0,000101                 Спр=1+(|А|-|В|)

-0,101001

 0,000101

 0,100100              Спр=1+0,100100=1,100100

4) А‹0, В‹0, С‹0.

А=-0,101001         В=-0,000101

Апр=1,101001       Впр=1,000101                 Спр=1+|А|+|В|

+0,101001

 0,000101

 0,101110              Спр=1+ 0,101110=1,101110
Таким образом, в прямом коде знаковый разряд и цифровую часть нельзя рассматривать как единое целое. Кроме того, необходимо кроме сумматора иметь и вычитатель. В результате этого прямой код не применяется для выполнения операции алгебраического сложения, но применяется для выполнения операций умножения и деления.


1.1.3 Дополнительный код
В дополнительном коде операция вычитания заменяется операцией алгебраического сложения. При этом знаковый разряд и цифровая часть рассматриваются как единое целое.

Рассмотрим особенности преобразования в дополнительный код. Отрицательное число заменяется некоторым вспомогательным положительным числом, причем :       
<img width=«248» height=«48» src=«ref-1_1457775844-644.coolpic» v:shapes="_x0000_i1028">
При этом для дробных отрицательных чисел всегда имеет место: |А|+|[A]Д |=1

Геометрическая интерпретация дополнительного кода правильной дроби при р=2 представлена на рис. 1.1.




<img width=«2» height=«59» src=«ref-1_1457776488-77.coolpic» v:shapes="_x0000_s1026">-1                А<0            A>0            +1                        +2

<img width=«30» height=«2» src=«ref-1_1457776565-76.coolpic» v:shapes="_x0000_s1027"><img width=«2» height=«21» src=«ref-1_1457776641-75.coolpic» v:shapes="_x0000_s1028"><img width=«2» height=«21» src=«ref-1_1457776641-75.coolpic» v:shapes="_x0000_s1029"><img width=«532» height=«2» src=«ref-1_1457776791-92.coolpic» v:shapes="_x0000_s1030">A>0                               A<0                                                                                       Область изображений

Рисунок 1.1- Геометрическая интерпретация дополнительного кода
С ростом абсолютной величины дополнительный код положительного числа возрастает, а отрицательного — убывает.

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

Дополнительный код положительного числа совпадает с его представлением в прямом коде.

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

Для преобразования прямого кода отрицательного числа в дополнительный необходимо все значащие разряды заменить на противоположные (проинвертировать) и прибавить 1 к младшему разряду. Знаковый разряд остается без изменения.
[A]пр=0,10110100;          [A]дк=0,10110100;

[В]пр=1,10111101;[В]дк=1,01000011.


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

Рассмотрим все возможные варианты сложения чисел в дополнительном коде:
1) А›0, В›0, С›0.

А=+0,101101        В=+0,000111

Апр=0,101101       Впр=0,000111                

Адк=0,101101       ВДК=0,000111                Сдк=Адк+Вдк

+0,101101

 0,000111

 0,110100

2) А›0, В‹0, С›0.

А=+0,101101        В=-0,000111

Апр=0,101101       Впр=1,000111                

Адк=0,101101       ВДК=1,111001                Сдк=Адк+Вдк

 + 0,101101

 1,111001

1¬0,100110         (1 переноса из знакового разряда суммы не учитывается)

3) А‹0, В›0, С‹0.

А=-0,101101         В=+0,000111

Апр=1,101101       Впр=0,000111                

Адк=1,010011       ВДК=0,000111                Сдк=Адк+Вдк

 + 1,010011

 0,000111

 1,011010              (Спр=1,100110)

4) А‹0, В‹0, С‹0.

А=-0,101101         В=-0,000111

Апр=1,101101       Впр=1,000111                

Адк=1,010011       ВДК=1,111001                Сдк=Адк+Вдк

 + 1,010011

 1,111001

1¬1,001100                   (Спр=1,110100)
При сложении в дополнительном коде возможно переполнение разрядной сетки (в первом и четвертом случаях). Признаком переполнения является отличие знака полученной суммы от знаков слагаемых.


    продолжение
--PAGE_BREAK--1.1.5 Обратный код
Числа в обратном коде представляются в следующем виде для двоичных чисел:
<img width=«202» height=«53» src=«ref-1_1457776883-586.coolpic» v:shapes="_x0000_i1029">
Обратный код положительного числа совпадает с его представлением в прямом коде. Обратный код отрицательного числа получают инвертированием всех разрядов числа, кроме знакового.
[A]пр=0,10110100;          [A]ок=0,10110100;

[В]пр=1,10111101;[В]ок=1,01000010.


1.1.6 Сложение в обратном коде
В обратном коде, как и в дополнительном, операция вычитания заменяется операцией сложения. При этом знаковый разряд и цифровая часть числа рассматриваются как единое целое. Правильный знак суммы получается в результате суммирования цифр знаковых разрядов операндов и единицы переноса из цифровой части, если она есть. Характерной особенность сложения в обратном коде является наличие циклического переноса (если он возникает) из знакового разряда в младший разряд цифровой части, благодаря которому осуществляется коррекция суммы на 2-n.

Рассмотрим все возможные варианты сложения чисел в обратном коде:
1) А›0, В›0, С›0.

А=+0,101101        В=+0,000111

Апр=0,101101       Впр=0,000111                

Аок=0,101101       Вок=0,000111                 Сок=Аок+Вок

+0,101101

 0,000111

 0,110100

2) А›0, В‹0, С›0.

А=+0,101101        В=-0,000111

Апр=0,101101       Впр=1,000111                

Аок=0,101101       Вок=1,111000                 Сок=Аок+Вок

 + 0,101101

 1,111000

1ß0,100101 (1 переноса из знакового разряда суммы прибавляется в

 à     1                младший значащий разряд результата)

 0,100110

3) А‹0, В›0, С‹0.

А=-0,101101         В=+0,000111

Апр=1,101101       Впр=0,000111                

Аок=1,010010       Вок=0,000111                 Сок=Аок+Вок

 + 1,010010

 0,000111

 1,011001              (Спр=1,100110)

4) А‹0, В‹0, С‹0.

А=-0,101101         В=-0,000111

Апр=1,101101       Впр=1,000111                

Аок=1,010010       Вок=1,111000                 Сок=Аок+Вок

 + 1,010010

 1,111000

1ß1,001010 (1 переноса из знакового разряда суммы прибавляется в

à      1                младший значащий разряд результата)

 1,001011                       (Спр=1,110100)
При сложении в обратном коде, как и в дополнительном, в 1-м и 4-м случаях возможно переполнение.

Для упрощения обнаружения переполнения разрядной сетки ЭВМ используются модифицированный обратный и модифицированный дополнительный коды.
<img width=«231» height=«57» src=«ref-1_1457777469-1014.coolpic» v:shapes="_x0000_i1030">
При представления положительных чисел в модифицированном коде в знаковых разрядах используется 00, а отрицательных — 11. Признаком переполнения разрядной сетки являются разные значения в знаковых разрядах.

Пример 1.
[А]мок=00,101101           [В]мок=00,011100

         00,101101

         00,011100

         01,001001 — положительное переполнение

         Пример 2.

[А]мок=11,010010           [В]мок=11,100011

         11,010010

         11,100011

 1←10,110101

         à+ 1

 10,110110  — отрицательное переполнение.

<img width=«345» height=«161» src=«ref-1_1457778483-1375.coolpic» v:shapes="_x0000_i1031">





    продолжение
--PAGE_BREAK--2.Операция сдвига в ЭВМ


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

Сдвиг прямого кода числа на kразрядов вправо эквивалентен умножению этого числа на 2-k. Ввиду того, что при сдвиге вправо младшие разряды сдвигаемого числа выходят за пределы разрядной сетки машины и теряются, погрешность представления сдвинутого кода числа имеет отрицательный знак для кодов положительных чисел и положительный знак для кодов отрицательных чисел. Для ее уменьшения необходимо предпринимать округление чисел. При сдвиге прямого кода отрицательной дроби сдвигается только ее мантисса, а знак остается без изменения.

Пример 1.
А= 1,011010,        k=1 (левый сдвиг)                  k=-1 (правый сдвиг)

                            21хА=1,110100                        2-1хА=1,001101
Сдвиг прямого кода числа влево на kразрядов эквивалентен умножению числа на 2k. Эта операция корректна до тех пор, пока старшие значащие цифры не начнут выходить за пределы разрядной сетки, т.е. пока число по абсолютной величине не станет больше 1. При сдвиге влево освобождающиеся справа разряды заполняются 0.

Сдвиг положительного числа влево или вправо в дополнительном или обратном кодах ничем не отличаются от сдвига положительного числа в прямом коде.

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

Общим правилом сдвига дробей вправо в инверсном коде является наличие передачи из знакового разряда в старший цифровой разряд и восстановление знака, т.е. освобождающиеся справа разряды заполняются 1.

При сдвиге влево освобождающиеся справа разряды в обратном коде заполняются 1, а в дополнительном — 0. Количество сдвигов правильной дроби влево ограничено условием | Ах2k|<1, т.е. сдвиг допустим лишь до тех пор, пока в разряде справа от запятой не появится 0 (пока сохраняется знак результата). Перемена знака результата при сдвиге влево является признаком переполнения, который для отрицательных и положительных чисел совпадает с признаком переполнения, возникающим при сложении кодов двух чисел.

Пример 2.

Сдвиг в обратном коде:

[А]о= 1,011010,    k=1 (левый сдвиг)                  k=-1 (правый сдвиг)

                                      21хА=1,110101                        2-1хА=1,101101
Сдвиг в дополнительном коде:

[А]д= 1,011010,    k=1 (левый сдвиг)                  k=-1 (правый сдвиг)

                                      21хА=1,110100                        2-1хА=1,101101


2.1 Алгоритм сложения чисел в машинах с плавающей запятой


Результат сложения двух чисел А=pmaa; B=pmbb, представленных в форме с плавающей запятой, должен быть тоже числом вида С=pmсc(здесь a, b, c– мантиссs, ma, mb, mc– порядокb). При этом должно выполняться равенство:

pmaa+ pmbb= pmсc
При сложении чисел, представленных в нормальной форме, можно выделить 4 этапа:

1. Уравниваются порядки слагаемых: меньший порядок увеличивается до большего, а мантисса преобразуемого числа сдвигается вправо на соответствующее количество разрядов.

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

2. Производится преобразование мантисс в один из модифицированных инверсных кодов: дополнительный или обратный.

3. Выполняется сложение мантисс по правилам сложения чисел с фиксированной запятой.

4. Производится нормализация результата и преобразование в прямой код, приписывается общий порядок слагаемых и выполняется округление мантиссы результата.

Пример 1. Прямой код.
А: mа=0,011; a=1,101010;                 В: mв=0,101; b=0,110010;
т.к. mа— mв= 2? то необходимо mаувеличить до mви откорректировать мантиссу числа А сдвигом на 2 разряда вправо.
А’: m’а=0,101; a=1,001010;

[a’]Д=11,110110;  [b]Д=00,110010;

+11,110110;00,110010
    продолжение
--PAGE_BREAK--
еще рефераты
Еще работы по информатике