Модифицированные обратный и дополнительный коды.

Представление информации в ЭВМ.

Единицы измерения информации.

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

Выше были определены понятия: «бит», «байт» и «машинное слово». В ЭВМ также пользуется следующими понятиями (Табл. 2.18.):

Таблица 2.18. Таблица единиц измерения информации.

Название Символ Значение Степень
Бит bit Наименьшая возможная единица измерения информации в вычислительной технике. Принимает значения: 0 или 1. Передается различными уровнями напряжения либо тока  
Байт B Минимально адресуемая последовательность фиксированного числа битов. В описании сетевых протоколов, может использоваться термин «октет». 1B = 8 bit  
Килобайт KB 1KB = 1024B 103
Мегабайт MB 1MB = 1024KB 106
Гигабайт GB 1GB = 1024MB 109
Терабайт TB 1TB = 1024GB 1012
Петабайт PB 1PB = 1024TB 1015

Коды чисел.

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

· прямой;

· обратный;

· дополнительный;

· модифицированный код.

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

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

Предположим, что длина кода не больше 1 байта.

К кодам выдвигаются следующие требования:

· разряды числа в коде жестко связаны с разрядами байта.

· для записи кода знака в байте отводится фиксированный, строго определенный разряд.

Поэтому, в байте (Рис. 2.35) для представления числа будет отведено 7 разрядов (0 – 6), а для записи кода знака один разряд (7) .

Рис. 2.35

Знак Значение кода
               

Прямой код.

Прямой код двоичного числа совпадает по изображению с записью самого числа. Значение знакового разряда для положительных чисел равно 0, а для отрицательных чисел 1 (Табл.2.19).

Таблица 2.19. Примеры прямого кода.

Знак Значение кода Примечание
Число +10101
Число +11101
Число +1010101
Число -1110
Число -1101110
Число -1111111


Обратный код.

Обратный код для положительного числа совпадает с прямым кодом. Для отрицательного числа все цифры числа заменяются на противоположные (1 на 0, 0 на 1), а в знаковый разряд заносится единица (Табл.2.20).

Таблица 2.20. Примеры обратного кода.

Знак Значение кода Примечание
Число +10101
Число +11101
Число +1010101
Число -1110
Число -1101110
Число -1111111

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

Дополнительный код положительного числа совпадает с прямым кодом. Для отрицательного числа дополнительный код образуется путем получения обратного кода и добавлением к младшему разряду единицы (Табл.2.21).

Таблица 2.21. Примеры дополнительного кода.

Знак Значение кода Примечание
Число +10101
Число +11101
Число +1010101
Число -1110
Число -1101110
Число -1111111

Сложение чисел в кодах.

При сложении чисел в кодах возникающая единица переноса из седьмого бита в знаковый бит отбрасывается (Табл.2.22).

Пример.

A = +1010101

B = +1011101

A + B = 1010101 + 1011101

Таблица 2.22. Пример сложения положительных чисел.

  Знак Значение кода Примечание
  A
+ B
= A + B. Единица переноса из седьмого бита в знаковый бит отбрасывается

Рассмотрим правила записи в знаковом бите.

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

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

Пример.

A = -1010101;

B = +1011101

Таблица 2.23. Пример сложения чисел в обратном коде, с положительной суммой.

  Знак Значение кода Примечание
  Обратный код для A
+ Обратный код для B
  В знаковом бите появилась единица переноса
  1+1 Единица переноса в знаковом бите прибавлена к значению младшего бита.
= A + B = 1000 – положительная сумма

Пример.

A = +1010101;

B = -1011101

Таблица 2.24. Пример сложения чисел в обратном коде, с отрицательной суммой.

  Знак Значение кода Примечание
  Обратный код для A
+ Обратный код для B
  Отрицательное число. Переводим в прямой код.
= A + B = -1000 – отрицательная сумма

При сложении чисел в дополнительном коде возникающая единица переноса в знаковом бите отбрасывается.

Дополнительный код преобразуется в прямой также, как и обратный, с последующим прибавлением единицы к младшему разряду (Табл.2.25 - Табл.2.26).

Пример.

A = -1010101;

B = +1011101

Таблица 2.25. Пример сложения чисел в дополнительном коде, с положительной суммой.

  Знак Значение кода Примечание
  Дополнительный код для A
+ Дополнительный код для B
  В знаковом бите появилась единица переноса. Она отбрасывается
= A + B = 1000 – положительная сумма

Пример.

A = +1010101;

B = -1011101

Таблица 2.26. Пример сложения чисел в дополнительном коде, с отрицательной суммой.

  Знак Значение кода Примечание
  Дополнительный код для A
+ Дополнительный код для B
  Отрицательное число. Переводим в прямой код.
  Единицу прибавляем к значению младшего бита.
= A + B = -1000 – отрицательная сумма

Модифицированные обратный и дополнительный коды.

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

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

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

· "00" соответствует знаку "+";

· "11" - знаку "-".

Любая другая комбинация ("01" или "10"), получившаяся в знаковых разрядах служит признаком переполнения разрядной сетки.

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

Рассмотрим сложение чисел в модифицированных кодах (Табл.2.27 - Табл.2.31) , используя данные предыдущих примеров.

Пример.

A = +1010101

B = +1011101

A + B = 1010101 + 1011101

Таблица 2.27. Пример сложения положительных чисел в модифицированных кодах с переполнением

  Знак Значение кода Примечание
  А
+ В
= Переполнение

Пример.

A = -1010101;

B = +1011101

Таблица 2.28. Пример сложения чисел в модифицированных кодах в обратном коде, с положительной суммой.

  Знак Значение кода Примечание
  Обратный код для A
+ Обратный код для B
  В знаковом бите появилась единица переноса
  1+1 Единица переноса в знаковом бите прибавлена к значению младшего бита.
= A + B = 1000 – положительная сумма

Пример.

A = +1010101;

B = -1011101

Таблица 2.29. Пример сложения чисел в модифицированных кодах в обратном коде, с отрицательной суммой

  Знак Значение кода Примечание
  Обратный код для A
+ Обратный код для B
  Отрицательное число. Переводим в прямой код.
= A + B = -1000 – отрицательная сумма

Пример.

A = -1010101;

B = +1011101

Таблица 2.30. Пример сложения чисел в модифицированных кодах в дополнительном коде, с положительной суммой.

  Знак Значение кода Примечание
  Дополнительный код для A
+ Дополнительный код для B
  В знаковом бите появилась единица переноса. Она отбрасывается
= A + B = 1000 – положительная сумма

Пример.

A = +1010101;

B = -1011101

Таблица 2.31. Пример сложения чисел в модифицированных кодах в дополнительном коде, с отрицательной суммой

Наши рекомендации