Диапазоны значений целых чисел со знаком
Формат числа в байтах | Диапазон | |
Запись с порядком | Обычная запись | |
–27 ... 27–1 | –128 ... 127 | |
–215 ... 215–1 | –32768 ... 32767 | |
–231 ... 231–1 | –2147483648 ... 2147483647 |
Самый левый (старший бит) разряд определяет знак числа.
Если он равен 0, число положительное, если 1, то отрицательное.
Например, в однобайтовом формате число 46=1011102 имеет вид:
В ЭВМ в целях упрощения выполнения арифметических операций применяют специальные коды для представления чисел. Использование кодов позволяет свести операцию вычитания чисел к арифметическому сложению кодов этих чисел. Применяются прямой, обратный и дополнительный коды чисел. Дополнительный код используется для хранения чисел в запоминающем устройстве ЭВМ. Обратный и дополнительный коды используются для замены операции вычитания операцией сложения, что упрощает устройство арифметического блока ЭВМ.
Прямой код. Прямой код двоичного числа совпадает по изображению с записью самого числа. Значение знакового разряда для положительных чисел равно 0, а для отрицательных чисел 1.
Обратный код.Обратный код для положительного числа совпадает с прямым кодом. Для отрицательного числа все цифры числа заменяются на противоположные (1 на 0, 0 на 1), а в знаковый разряд заносится единица.
Дополнительный код.Дополнительный код положительного числа совпадает с прямым кодом. Для отрицательного числа дополнительный код образуется путем получения обратного кода и добавлением к младшему разряду единицы.
Например, в однобайтовом формате числа 27 и -27 имеют вид:
Число | Прямой код | Обратный код | Дополнительный код |
-27 |
Пример 1. Найти прямой, обратный и дополнительный код представления числа 13 в однобайтном формате.
1 шаг: Переведем число 13 из десятичной системы счисления в двоичную.
2 шаг: Для представления числа в компьютере выделен 1 байт. Старший бит занимает знак числа – 0. Сам код числа должен занимать 7 бит. Таким образом прямой код числа 13
Так как для положительных чисел прямой, обратный и дополнительный код совпадает, то ответ 00001101.
Пример 2. Найти прямой, обратный и дополнительный код представления числа -23 в однобайтовом формате.
1 шаг: Переведем число -23 из десятичной системы счисления в двоичную. Получим
-2310=-101112
2 шаг: Прямой код числа в однобайтовом формате, учитывая, что старший бит занимает знак числа -1, имеет вид
3 шаг: Найдем обратный код числа -23, заменив все цифры числа на противоположные (1 на 0, 0 на 1), а в знаковый разряд заносится единица. Имеем,
4 шаг: Найдем дополнительный код числа -23, добавив 1 к младшему разряду обратного кода.
Ответ: прямой код – 10010111; обратный – 11101000; дополнительный – 11101001.
Так вот, прямой обратный и дополнительный код - это модели представления целых чисел, как положительных, так и отрицательных. Примеры записи некоторых чисел во всех трех восьмиразрядных кодах показаны в таблице ниже.
Число | Прямой код | Обратный код | Дополнительный код |
-1 | |||
-5 | |||
-8 | |||
-120 | |||
-127 |
Во всех трех кодах старший разряд указывает на знак числа и он равен единице, если число отрицательное и нулю в противном случае. Остальные разряды содержат представление модуля числа. Различие между кодами наблюдается именно в способах представления модуля. Для положительного числа модуль во всех трех кодах представляется одинаково - это просто естественная запись двоичного числа. Для отрицательных чисел, в обратном коде это просто поразрядная инверсия прямого кода, а в дополнительном - к обратному коду, как к числу, просто прибавляется единица.
Распространёнными формами представления чисел со знаками является их представление в прямом, обратном и дополнительном коде.
Прямой код числа образуется кодированием знака числа нулём, если число положительно и единицей, если число отрицательно (для двоичной системы)
Для общего случая (q - 1) - если число отрицательно, и 0 - если число положительно. q - основание системы счисления.
Код знака записывается перед старшей цифрой числа и отделяется от неё точкой:
-1.01 = 1.101
Прямой, обратный и дополнительный коды положительных чисел совпадают между собой.
Обратный код отрицательного числа образуется из прямого кода, заменой его цифр на их дополнения до величины q-1. Код знака сохраняется без изменения.
Пример :
+12310 = 0.123пр = 0.123об.
-12310 = 9.123пр = 9.876об
+3А7С0016 = 0.3А7С00пр = 0.3А7С00об.
-3А7С0016 = F.3А7С00пр= F.C583FFоб.
-1012 = 1.101пр = 1.010об.
Замена цифр их дополнениями для двоичной системы совпадает с операцией инверсии, то есть нули заменяются единицами, единицы - нулями. Знак принимает значение, равное единице.
Дополнительный код отрицательного числа образуется из обратного увеличением на 1 его младшего разряда. При этом перенос из знакового разряда игнорируется.
Пример:
+23610 = 0.236пр.= 0.236об.= 0.236доп.
-23610 = 9.236пр.= 9.763об.= 9.764доп.
-1012= 1.101пр.= 1.010об= 1.011доп.
-3А7С16= F.3А7Спр= F.C583об.= F.C584доп.
Правила перевода из прямого кода в обратный и из обратного в прямой, а также из прямого в дополнительный и из дополнительного в прямой совпадают между собой.