прямой,обр,доп коды
.docТема 3: Представление целых чисел в компьютере.
Представление числовой информации в компьютере
Любая информация (числа, текстовая, графическая и т. д.) представляется в ЭВМ в виде двоичных кодов фиксированной или переменной длины. Отдельные элементы двоичного кода, имеющие значение 0 или 1, называют битами. Двоичный код состоящий из 8 разрядов носит название байта.
Целые числа могут представляться в компьютере со знаком или без знака.
Представление целых чисел без знака в компьютере
Целые числа без знака обычно занимают в памяти компьютера один, два или 4 байта.
В однобайтовом формате числа принимают значения от 000000002 до 111111112.
В двубайтовом формате — от 00000000 000000002 до 11111111 111111112.
В четырехбайтовом - от 00000000 00000000 00000000 000000002 до 11111111 1111111 11111111 111111112
Диапазоны значений целых чисел без знака
Формат числа в байтах |
Диапазон |
|
Запись с порядком |
Обычная запись |
|
1 |
0 ... 28–1 |
0 ... 255 |
2 |
0 ... 216–1 |
0 ... 65535 |
4 |
0 ... 232–1 |
0…429967295 |
Например, в однобайтовом формате число 62=1111102 имеет вид:
В двубайтовом формате число 1402=101011110102 имеет вид:
Пример 1. Для хранения целого числа без знака используется один
байт. Записать представление числа 19 в компьютере.
1 шаг: Переведем число 19 из десятичной системы счисления в двоичную.
2 шаг: Так как для представления числа в компьютере выделен 1 байт, то код числа должен содержать 8 знаков (8 бит). Поэтому впереди числа дописываем 3 незначащих нуля.
0 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
Задания.
1. Запишите числа в беззнаковом коде (формат 1 байт):
а) 31; б) 163; в) 65; г) 128.
2. Найдите десятичные представления чисел, записанных в беззнаковом коде:
а) 0 1011000; б) 1 0011011; в) 0 1101001; г) 1 1000000.
Представление целых чисел со знаком
Так же как беззнаковые целые числа целые со знаком обычно занимают в памяти компьютера один, два или 4 байта.
Диапазоны значений целых чисел со знаком
Формат числа в байтах |
Диапазон |
|
Запись с порядком |
Обычная запись |
|
1 |
–27 ... 27–1 |
–128 ... 127 |
2 |
–215 ... 215–1 |
–32768 ... 32767 |
4 |
–231 ... 231–1 |
–2147483648 ... 2147483647 |
Самый левый (старший бит) разряд определяет знак числа. Если он равен 0, число положительное, если 1, то отрицательное.
Например, в однобайтовом формате число 46=1011102 имеет вид:
В ЭВМ в целях упрощения выполнения арифметических операций применяют специальные коды для представления чисел. Использование кодов позволяет свести операцию вычитания чисел к арифметическому сложению кодов этих чисел. Применяются прямой, обратный и дополнительный коды чисел. Дополнительный код используется для хранения чисел в запоминающем устройстве ЭВМ. Обратный и дополнительный коды используются для замены операции вычитания операцией сложения, что упрощает устройство арифметического блока ЭВМ.
Прямой код. Прямой код двоичного числа совпадает по изображению с записью самого числа. Значение знакового разряда для положительных чисел равно 0, а для отрицательных чисел 1.
Обратный код. Обратный код для положительного числа совпадает с прямым кодом. Для отрицательного числа все цифры числа заменяются на противоположные (1 на 0, 0 на 1), а в знаковый разряд заносится единица.
Дополнительный код. Дополнительный код положительного числа совпадает с прямым кодом. Для отрицательного числа дополнительный код образуется путем получения обратного кода и добавлением к младшему разряду единицы.
Например, в однобайтовом формате числа 27 и -27 имеют вид:
Число |
Прямой код |
Обратный код |
Дополнительный код |
27 |
00011011 |
00011011 |
00011011 |
-27 |
10011011 |
11100100 |
11100101 |
Пример 1. Найти прямой, обратный и дополнительный код представления числа 13 в однобайтном формате.
1 шаг: Переведем число 13 из десятичной системы счисления в двоичную.
2 шаг: Для представления числа в компьютере выделен 1 байт. Старший бит занимает знак числа – 0. Сам код числа должен занимать 7 бит. Таким образом прямой код числа 13
0 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
Так как для положительных чисел прямой, обратный и дополнительный код совпадает, то ответ 00001101.
Пример 2. Найти прямой, обратный и дополнительный код представления числа -23 в однобайтовом формате.
1 шаг: Переведем число -23 из десятичной системы счисления в двоичную. Получим
-2310=-101112
2 шаг: Прямой код числа в однобайтовом формате, учитывая, что старший бит занимает знак числа -1, имеет вид
1 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
3 шаг: Найдем обратный код числа -23, заменив все цифры числа на противоположные (1 на 0, 0 на 1), а в знаковый разряд заносится единица. Имеем,
1 |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
4 шаг: Найдем дополнительный код числа -23, добавив 1 к младшему разряду обратного кода.
1 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
Ответ: прямой код – 10010111; обратный – 11101000; дополнительный – 11101001.
Так вот, прямой обратный и дополнительный код - это модели представления целых чисел, как положительных, так и отрицательных. Примеры записи некоторых чисел во всех трех восьмиразрядных кодах показаны в таблице ниже.
Число |
Прямой код |
Обратный код |
Дополнительный код |
0 |
00000000 |
00000000 |
00000000 |
1 |
00000001 |
00000001 |
00000001 |
-1 |
10000001 |
11111110 |
11111111 |
5 |
00000101 |
00000101 |
00000101 |
-5 |
10000101 |
11111010 |
11111011 |
8 |
00001000 |
00001000 |
00001000 |
-8 |
10001000 |
11110111 |
11111000 |
120 |
01111000 |
01111000 |
01111000 |
-120 |
11111000 |
10000111 |
10001000 |
127 |
01111111 |
01111111 |
01111111 |
-127 |
11111111 |
10000000 |
10000001 |
Во всех трех кодах старший разряд указывает на знак числа и он равен единице, если число отрицательное и нулю в противном случае. Остальные разряды содержат представление модуля числа. Различие между кодами наблюдается именно в способах представления модуля. Для положительного числа модуль во всех трех кодах представляется одинаково - это просто естественная запись двоичного числа. Для отрицательных чисел, в обратном коде это просто поразрядная инверсия прямого кода, а в дополнительном - к обратному коду, как к числу, просто прибавляется единица.
Распространёнными формами представления чисел со знаками является их представление в прямом, обратном и дополнительном коде. Прямой код числа образуется кодированием знака числа нулём, если число положительно и единицей, если число отрицательно (для двоичной системы) Для общего случая (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доп. Правила перевода из прямого кода в обратный и из обратного в прямой, а также из прямого в дополнительный и из дополнительного в прямой совпадают между собой.