Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие.docx
Скачиваний:
84
Добавлен:
08.05.2015
Размер:
722.01 Кб
Скачать
      1. Обратный код.

В обратном коде (ОК), также как и в прямом коде, для обозначения знака положительного числа используется бит, равный нулю, и знака отрицательного - единице. Об­рат­ный код отрицательного двоичного числа формируется дополнением модуля исходного числа нулями до самого старшего разряда модуля, а затем поразрядной заменой всех нулей числа на единицу и всех единиц на нули. В знаковом разряде обратного кода у положительных чисел будет 0, а у отрицательных - 1.

На рис. 1.2 приведен формат однобайтового двоичного числа в обратном коде.

Рис. 1.2. Формат двоичного числа со знаком в обратном коде

а - положительное число; б – отрицательное

В общем случае ОК является дополнением модуля исходного числа до наибольшего числа без знака, помещенного в разрядную сетку.

Алгоритм формирования ОК очень прост, при этом ОК позволяет уни­фи­цировать операции сложения и вычитания в АЛУ, которые в прямом ко­де выполняются по-разному. Однако работа с ОК вызывает ряд труд­нос­тей. В частности, возникают два нуля: +0 и -0, т.е. в прямом коде (в котором пред­­ставлены положительные числа) имеет место (+0) = 000...0, а в обрат­ном коде (в котором представлены отрицательные числа): (-0) = 111...1.

Кроме того, в операциях сложения и вычитания требуется дополни­тельная операция по прибавлению бита переноса в младший разряд суммы. Рассмотрим правила алгебраического сложения в ОК (поскольку А-В=А+(-В)). Алгоритм сложения в ОК включает в себя:

- сложение кодов, включая знаковый разряд;

- прибавление переноса к МЗР (младшему значащему разряду) суммы.

Пример:

Вычислить выражение -3(10) -2(10).

Пример:

Вычислить 7(10) -3(10).

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

      1. Дополнительный код

Дополнительный код (ДК) строится следующим образом. Сначала формируется обратный код (ОК), а затем к младшему разряду (МЗР) добавляют 1. При выполнении арифметических операций положительные числа представляются в прямом коде (ПК), а отрицательные числа - в ДК, причем обратный перевод ДК в ПК осуществляется аналогичными операциями в той же последовательности. На рис. 2.3 рассмотрена цепь преобразований числа из ПК в ДК и обратно в двух вариантах.

Рис. 1.3. Два варианта преобразования чисел из ПК в ДК и обратно

Пример:

Число -5(10) перевести в ДК и обратно (первый вариант).

Пример:

Число -5(10) перевести в ДК и обратно (второй вариант).

Использование ДК для представления отрицательных чисел устраняет двусмысленное представление нулевого результата (возникновение двух нулей: +0 и -0), так как -0 исчезает.

В общем случае использованием ДК для записи отрицательных чисел можно перекрыть диапазон десятичных чисел от –2k-1 до +2k-1-1, где k - число используемых двоичных разрядов, включая знаковый. Так, с помощью одного байта можно представить десятичные числа от -128 до +127, либо только положительные числа от 0 до 255 (здесь под положительными числами понимаются числа без знака). В табл.1 приведены 4-разрядные двоичные числа от 0000 до 1111 и десятичные числа в случае представления их со знаком и без знака. Из этой таблицы следует, что в формате 4-разрядного двоичного числа могут быть представлены десятичные числа со знаком в диапазоне от -8 до +7 или десятичные числа без знака в диапазоне от 0 до +15.

Оба этих способа представления чисел (со знаком и без знака) широко используются в ЭВМ.

Таблица 1. Представление десятичных чисел одним полубайтом.

4-х разрядное

двоичное число

десятичные эквиваленты двоичного числа со знаком

десятичные эквиваленты двоичного числа без знака

0000

+0

0

0001

+1

1

. . . . ПК

. . .

. . .

0110

+6

6

0111

+7

7

1000

-8

8

1001

-7

9

1010

-6

10

. . . . ДК

. . .

. . .

1110

-2

14

1111

-1

15

В ЭВМ используется быстрый способ формирования ДК. Его суть заключается в следующем. Двоичное число в ПК просматривается от МЗР к СЗР. Пока встречаются нули, их копируют в одноименные разряды результата. Первая встретившаяся единица также копируется в соответствующий разряд, а каждый последующий бит исходного числа заменяется на противоположный (0 - на 1, 1 - на 0).

Пример:

Число –44(10) (10101100 (2)) перевести в ДК и обратно.

Проверка:

Пример:

Перевести в ДК модуль числа -44.

Как видно из примеров, результаты, полученные при преобразовании обоими методами, совпадают.