Информатика и программирование - Основы информатики (926517), страница 6
Текст из файла (страница 6)
Пример 4.16. Перевести число 25,6875 в двоичную систему счисления.
Решение. Перевод целой и дробной частей был выполнен в примерах 4 .12 и 4 .15. Объединим результаты перевода в одно число:
25,6875 = 11001,10112. □
Десятичная система счисления может использоваться в качестве промежуточного этапа при переводе чисел из одной системы счисления в другую. Приведенные в этой главе правила позволяют перевести числа из одной системы счисления в десятичную, а из нее – в любую другую системы счисления.
Глава 5.ПРЕДСТАВЛЕНИЕ ЧИСЕЛ
И СИМВОЛОВ В ПАМЯТИ ЭВМ
5.1.Представление целых чисел в памяти ЭВМ
5.1.1.Форматы представления целых чисел
Числа в ЭВМ хранятся в соответствии с форматом. Формат – это соглашение или правила представления числа в виде последовательности бит.
Минимальная единица хранения данных в ЭВМ – 1 байт. Существуют следующие форматы представления целых чисел: байт (полуслово), слово (включает 2 байта), двойное слово (4 байта), расширенное слово (8 байт). Биты, из которых состоят эти форматы, называются разрядами. Таким образом, в байте 8 разрядов, в слове – 16 разрядов, а в двойном слове – 32 разряда. Слева находятся старшие разряды, а справа – младшие. Каждый из этих форматов может быть знаковым (Рис. 5 .4) для представления положительных и отрицательных чисел или беззнаковым (Рис. 5 .5) для представления положительных чисел.
Рис. 5.4. Знаковые форматы представления целых чисел
Знаковым является самый старший разряд. На Рис. 5 .4 знаковый разряд обозначен символом S. Если он равен 0, то число считается положительным, а если разряд равен 1, то число считается отрицательным.
Рис. 5.5. Беззнаковые форматы представления целых чисел
В общем виде диапазон значений, представляемых знаковыми форматами представления целых чисел (табл. 5 .2) определяется по формуле
–2n–1 X 2n–1 – 1,
а для беззнакового формата определяется по формуле
0 X 2n – 1,
где n – число разрядов в формате.
Таблица 5.2. Форматы представления целых чисел в ЭВМ
Формат | Число разрядов | Диапазон (границы) | |
Знаковый | Беззнаковый | ||
Байт | 8 | –128; 127 | 0; 255 |
Слово | 16 | –32 768; 32767 | 0; 65 535 |
Двойное слово | 32 | –2 147 483 648; 2 147 483 647 | 0; 4 294 967 295 |
5.1.2.Прямой и дополнительный коды
представления двоичных чисел
В прямом коде старший бит кодирует знак числа (0 – для положительного, 1 – для отрицательного), а остальные биты – модуль числа.
Пример 5.17. Число 11 в прямом коде будет представляться как 0|1011п, а число –11 – как 1|1011п. □
В дополнительном коде положительное число кодируется также как и в прямом. Чтобы представить отрицательное число в дополнительном коде, существуют два способа. При представлении чисел в дополнительном коде используется операция инвертирования – замена бита на противоположный, то есть 0 на 1, а 1 на 0.
Правило 5.8. (поразрядное представление отрицательного числа в дополнительном коде) Представить модуль отрицательного числа в прямом коде и проинвертировать все разряды левее самой младшей (правой) единицы.
Пример 5.18. Представить число –11 в дополнительном коде путем инвертации разрядов.
Решение. Переведем модуль этого числа в двоичную систему: 11 = 10112 и представим его в прямом коде: 0|1011п. Самая младшая единица – последняя, поэтому ее оставляем без изменения, а остальные разряды слева инвертируем (Рис. 5 .6).
В результате получаем 1|0101д – представление числа –11 в дополнительном коде. □
Рис. 5.6. Представление числа –11 в дополнительном коде
Правило 5.9. (арифметическое представление отрицательного числа в дополнительном коде) Прибавить к отрицательному числу 2m, где m – количество разрядов в двоичном представлении или данном формате, и полученное число перевести в двоичную систему счисления. Для байта 28 = 256, для слова 216 = 65 536, для двойного слова 232 = 4 294 967 296.
Из этих правил можно сделать вывод, что положительные числа в случае увеличения числа разрядов дополняются слева нулями, а отрицательные – единицами.
Пример 5.19. Представить число –11 в дополнительном коде путем арифметических операций.
Решение. Пусть необходимо получить m = 5 разрядов дополнительного кода. Вычислим слагаемое 2m = 25 = 32. Произведем сложение и перевод в двоичную систему счисления:
–11 + 32 = 21 = 101012.
Полученный результат соответствует представлению числа –11 в дополнительном коде.
Для m = 8, 28 = 256:
–11 + 256 = 245 = 111101012.
Представление числа –11 было дополнено единицами слева до 8 разрядов. □
Возможно и обратное преобразование отрицательных чисел, записанных в дополнительном коде.
Правило 5.10. (поразрядное определение значения отрицательного числа, записанного в дополнительном коде) Алгоритм определения значения отрицательного числа в дополнительном коде состоит из следующих шагов.
1. Проинвертировать все разряды левее самой младшей (правой) единицы.
2. Перевести число из двоичной системы счисления в десятичную систему по правилу 4 .1.
3. Умножить результат на –1.
Пример 5.20. Определить, какое десятичное число закодировано числом 1|0101д с помощью поразрядного определения.
Решение. Проинвертируем разряды числа:
1010|1д 0101|1п.
Переведем число из двоичной системы счисления в десятичную систему счисления:
010112 = 11.
Умножим результат на –1 и получим число –11. □
Правило 5.11. (арифметическое определение отрицательного числа, записанного в дополнительном коде) Перевести двоичное число в десятичную систему счисления и вычесть из полученного числа число 2m, где m – количество разрядов в двоичном представлении.
Пример 5.21. Определить, какое десятичное число закодировано числом 1|0101д с помощью арифметического определения.
Решение. Переведем число из двоичной системы счисления в десятичную систему счисления:
101012 = 21.
Вычтем из полученного результата перевода число 2m = 25 = 32, так как двоичное число состоит из 5 разрядов:
21 – 32 = –11.
В результате получим десятичное число –11. □
Числа в знаковых форматах записываются в дополнительном коде, а в беззнаковых – в прямом.
Запись в дополнительном коде необходима, чтобы складывать и вычитать положительные и отрицательные числа без преобразований.
Пример 5.22. Сложить 21 и –11 в двоичной системе счисления.
Решение. Переведем слагаемые в дополнительный код:
21 = 0|10101д; –11 = 1|10101д.
Будем использовать правила двоичной арифметики:
0 + 0 = 0;
1 + 0 = 0 +1 = 1;
1 + 1 = 10 (с переносом единицы в следующий разряд).
Сложим два двоичных числа столбиком с учетом того, что перенос единицы из знакового разряда игнорируется:
0101012
1101012
0010102 = 10.
В результате получено число 10 – сумма 21 и –11 без дополнительных преобразований. □
Форматы целых чисел слово и двойное слово располагаются в памяти ЭВМ в обратном порядке, то есть сначала младший байт, а затем старший. Например, слово B5DE16 будет располагаться в памяти, как показано на Рис. 5 .7.
Рис. 5.7. Расположение слова B5DE16 в памяти ЭВМ
Такое расположение байт удобно при операциях с числами, так как вычисления начинаются с младших разрядов, поэтому они и располагаются сначала.
5.2.Представление вещественных чисел
в памяти ЭВМ
Вещественные числа представляются в форме числа с плавающей запятой (точкой) вида:
M nP,
где M – мантисса (значащая часть числа); n – основание системы счисления; P – порядок числа.
Пример 5.23. Число 2,5 1018 имеет мантиссу равную 2,5, а порядок равный 18. □
Мантисса называется нормализованной, если ее абсолютное значение лежит в диапазоне:
1/n |M| < 1,
где n – основание системы счисления.
Это условие означает, что первая цифра после запятой не равна нулю, а абсолютное значение мантиссы не превышает единицы.
Число с нормализованной мантиссой называется нормализованным.
Пример 5.24. Представить числа –245,62 и 0,00123 в форме числа с плавающей точкой.
Решение. Число –245,62 можно представить в форме числа с порядком –245,62 100. Мантисса этого числа не нормализована, поэтому поделим его на 103, увеличив при этом порядок:
–0,24562 103.
В результате число –0,24562 103 нормализовано.
Число 0,00123 в форме числа с порядком 0,00123 100 не нормализовано, так как не нормализована мантисса. Умножим мантиссу на 102, уменьшив при этом порядок:
0,123 10–2.
В результате число 0,123 10–2 нормализовано. □
В данном примере для нормализации мантиссы запятая сдвигалась вправо или влево. Поэтому такие числа называют числами с плавающей точкой. В отличие от чисел с фиксированной точкой, они значительно ускоряют арифметические операции, при этом каждый раз необходимо нормализовывать мантиссу чисел с плавающей точкой.
Для основанного на стандарте IEEE-754 представления вещественного числа в ЭВМ используются m + p + 1 бит, распределяемые следующим образом (Рис. 5 .8): 1 разряд знака мантиссы; p разрядов порядка; m разрядов мантиссы.
Рис. 5.8. Структура общего формата числа с плавающей точкой
Это представление называется (m, p)-форматом.
Диапазон представления чисел X (m, p)-форматом определяется из неравенства:
При этом порядок числа P должен удовлетворять условию
–2p – 1 + 1 P 2p – 1 – 1
Для вещественных чисел в стандарте IEEE-754 используются (23,8)- и (52,11)-форматы, называемые одинарным и двойным вещественными форматами соответственно (табл. 5 .3).
Чтобы представить значение этих порядков, количество секунд, прошедших с момента образования планеты Земля, составляет всего 1018.
Правило 5.12. (перевод десятичных чисел в (m, p)-формат) Алгоритм перевода десятичного числа X в (m, p)-формат состоит из следующих шагов.
1. Если Х = 0, то принять знаковый разряд, порядок и мантиссу за ноль и закончить алгоритм.
2. Если X > 0, то принять знаковый разряд 0, иначе принять 1. Знаковый разряд сформирован.
3. Перевести целую и дробную часть абсолютного значения числа X в двоичную систему счисления. Если число дробное, то получить m + 1 разрядов. Принять порядок равный нулю.
Таблица 5.3. Сравнительные характеристики
вещественных форматов
Характеристики | Одинарный | Двойной |
Названия в языке Турбо-Паскаль | single | double |
Размер, байт/бит | 4/32 | 8/64 |
Порядок p, бит | 8 | 11 |
Мантисса m, бит | 23 | 52 |
Смещение порядка 2p – 1 – 1 | 127 | 1023 |
Количество значащих десятичных цифр мантиссы | 7 .. 8 | 15 .. 16 |
Диапазон десятичных порядков | –45 .. 38 | –324 .. 308 |
4. Если X 1, то перенести запятую влево до самого старшего разряда и увеличить порядок, иначе перенести запятую вправо до первого ненулевого (единичного) разряда и уменьшить порядок.
5. Если число разрядов дробной части меньше m, то дополнить дробную часть нулями справа до m разрядов. Отбросить единицу из целой части. Мантисса сформирована.
6. Прибавить к порядку смещение 2p – 1 – 1 и перевести порядок в двоичную систему счисления. Порядок сформирован. Код, в котором представлен порядок, называется смещенным. Смещенный порядок упрощает сравнение, сложение и вычитание порядков при арифметических операциях.
7. Записать знаковый разряд, порядок и мантиссу в соответствующие разряды формата.
Пример 5.25. Представить число –25,6875 в одинарном вещественном формате.