Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 3000544.doc
Скачиваний:
26
Добавлен:
30.04.2022
Размер:
14.75 Mб
Скачать

5.3.2. Представление чисел со знаком в дополнительном коде

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

Отрицательные числа в вычислительных машинах обычно представляются в виде дополнений. В общем случае дополнение любого n разрядного числа D с основанием системы счисления p равно pn - D.

Для внутреннего представления отрицательных чисел в ЭВМ используют так называемый двоично-дополнительный код. Отрицательное n-разрядное число равно дополнению его величины D: 2n -D. Положительное число представлено своим модулем. При этом старший бит числа также может служить признаком знака числа - число является положительным, если значение старшего разряда равно 0, единица соответствует отрицательному числу. Этот бит не является эквивалентом знака числа, так как участвует в арифметических операциях аналогично остальным разрядам числа.

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

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

1710 =218 =00 010 0012 28 = 100 000 000

инверсия 11 101 110 218 = 00 010 001

+ 1 -218 = 11 101 111

- 1710 =-218 = 11 101 111

4-разрядных чисел 8-разрядных чисел 16-разрядных чисел

+3 =0011 +3 = 00000011 +3 = 0000000000000011

инверсия 1100 11111100 1111111111111100

+ 1 + 1 + 1

- 3 =1101 -3 = 11111101 -3 = 1111111111111101

Двоично-дополнительная форма представления чисел со знаком приводит к изменению вида замкнутой числовой оси и диапазона изменения чисел.

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

-3 -2 -1 | 0 1 2

1101 1110 1111 0000 000 0010 --¬

|

-4 1100 Отрицательные | Положительные 0011 3

¦ числа | числа ¦

-5 1011 | 0100 4

|

-1010 1001 1000 0111 0110 0101

-6 -7 -8 | 7 6 5

Рис. 5.4. Представление чисел в дополнительном коде

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

-27…27-1 (-128…127), -215…215-1 (-32768…32767) или –231…231-1.

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

Рассмотрим примеры:

1) 3 + 4 = 7 2) 6 - 3 = 6 + (-3) = 3

+ 3 0011 + 6 0110

+ 4 +0100 - 3 + 1101 - число -3

+ 7 0111 + 3 1 0011 в дв.-доп. коде

___________/ \__/

возникший в результате переноса дв. код числа +3

лишний разряд игнорируется

3) -2 - 6 = (-2)+(-6) = -8 4) 4 - 7 = 4 + (-7) = -3

1110  дв.-доп. код числа –2 0100  +4

+ 1010  дв.-доп. код числа –6 + 1001  дв.-доп. код числа -7

1 1000  дв.-доп. код числа –8 1101  дв.-доп. код числа -3

 разряд не фиксируется

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

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

Наряду с рассмотренными способами представления отрицательных чисел существуют и другие: дополнение до единицы или обратным кодом и представление кодом со смещением.

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