Представление в ЭВМ положительных и отрицательных чисел


В математике для обозначения знака числа используют символы «+» и «-». При обработке двоичных чисел в ЭВМ знаки плюс и минус оказываются неудобными и заменяются символами «0» и «1», записанными в дополнительном знаковом разряде числа. Знаковый разряд вводится в число в качестве самого старшего разряда. Нуль в знаковом разряде соответствует положительному числу, единица — отрицательному.

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

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

Правила преобразования обратных и дополнительных кодов:

1. Прямой, обратный и дополнительный коды положительного числа — одинаковы.

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

3. Дополнительный код отрицательного числа равен обратному коду этого числа плюс единица младшего разряда.

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

Десятичная запись Прямой

код
Обратный код Дополнительный код
+5

+4

+3
0

0

0
101

100

011
0

0

0
101

100

011
0

0

0
101

100

011
+2

+1

+0
0

0

0
010

001

000
0

0

0
010

001

000
0

0

0
010

001

000
-0

— 1

— 2
1

1

1
000

001

010
1

1

1
111

110

101
0

1

1
000

111

110
-3

— 4

— 5
1

1

1
011

100

101
1

1

1
100

011

010
1

1

1
101

100

011
  ←знак   ←знак   ←знак