где Р – порядок числа,
т. е. вместо основания системы счисления 10 пишут букву Е, вместо запятой – точку, и знак умножения не ставится. Таким образом, число 15,5 в формате с плавающей запятой и линейной записи (компьютерное представление) будет записано в виде: 0.155Е2; 1.55Е1; 15.5Е0; 155.0Е-1; 1550.0Е-2 и т.д.
Независимо от системы счисления любое число в форме с плавающей запятой может быть представлено бесконечным множеством чисел. Такая форма записи называется ненормализованной. Для однозначного представления чисел с плавающей запятой используют нормализованную форму записи числа, при которой мантисса числа должна отвечать условию
где |А| — абсолютное значение мантиссы числа.
Условие (2.9) означает, что мантисса должна быть правильной дробью и иметь после запятой цифру, отличную от нуля, или, другими словами, если после запятой в мантиссе стоит не нуль, то число называется нормализованным. Так, число 15,5 в нормализованном виде (нормализованная мантисса) в форме с плавающей запятой будет выглядеть следующим образом: 0,155 · 102, т. е. нормализованная мантисса будет A = 0,155 и порядок Р = 2, или в компьютерном представлении числа 0.155Е2.
Числа в форме с плавающей запятой имеют фиксированный формат и занимают в памяти компьютера четыре (32 бит) или восемь байт (64 бит). Если число занимает в памяти компьютера 32 разряда, то это число обычной точности, если 64 разряда, то это число двойной точности. При записи числа с плавающей запятой выделяются разряды для хранения знака мантиссы, знака порядка, мантиссы и порядка. Количество разрядов, которое отводится под порядок числа, определяет диапазон изменения чисел, а количество разрядов, отведенных для хранения мантиссы, – точность, с которой задается число.
При выполнении арифметических операций (сложение и вычитание) над числами, представленными в формате с плавающей запятой, реализуется следующий порядок действий (алгоритм) :
1) производится выравнивание порядков чисел, над которыми совершаются арифметические операции (порядок меньшего по модулю числа увеличивается до величины порядка большего по модулю числа, мантисса при этом уменьшается в такое же количество раз);
2) выполняются арифметические операции над мантиссами чисел;
3) производится нормализация полученного результата.
Поясним сказанное выше на примерах.
Пример 1Произведем сложение двух чисел 0,5 · 102 и 0,8 · 103 в формате с плавающей запятой.
Решение.
Проведем выравнивание порядков и сложение мантисс 0,05 · 103 + 0,8 · 103 = 0,85 · 103. Полученная мантисса 0,85 является нормализованной, так как удовлетворяет условию (2.9).
Пример 2Произведем сложение двух чисел 0,1 · 22 и 0,1 · 23 в формате с плавающей запятой.
Решение.
Проведем выравнивание порядков и сложение мантисс: 0,01 · 23 + 0,1 · 23 = 0,11 · 23. Полученная мантисса 0,11 является нормализованной, так как удовлетворяет условию (2.9).
Упражнения для самостоятельного выполнения
1. Перевести числа, записанные в римской системе счисления, в числа десятичной системы счисления:
a) XL; б) СХХХ; в) CDXXVIII; г) CMLXXVI; д) MCMLII; е) MMV.
2. Используя программу MS Excel, реализовать автоматический перевод чисел из десятичной системы счисления в римскую.
3. Создать и заполнить все ячейки следующей таблицы, используя табличный процессор MS Excel.
4. Используя формулы (2.1) —(2.6) записать в развернутом виде числа:
a) K10 = 12355; б) К8 = 321476; в) К2 = 101110011;
г) K16 = 143D5; е) K10 = 769,314; ж) К8 = 0,1734;
з) K2 = 100101,011; и) K16 = ЗА1,5С1.
5. Заполнить все строки следующей таблицы.
6. Правильно ли записаны числа в соответствующих системах счисления:
а) К2 = 100200; б) K16 = CD1; в) K10 = F,345; г) K8 = -122453?
7. Какие из чисел 3D716, 100101112, 3758 и 134245 являются наибольшим и наименьшим?
8. Перевести числа 23410, 100010, 30,7510, 9,810 в двоичную, восьмеричную и шестнадцатеричную системы счисления.
9. Перевести числа 100012, 1010,012, 1111112, 1001110,0112 в десятичную, восьмеричную и шестнадцатеричную системы счисления.
10. Перевести числа 2716, D,1B16, 4116, 25E,816 в двоичную, восьмеричную и десятичную системы счисления.
11. Перевести числа 2378, 10508, 33,758, 0,7568 в двоичную, десятичную и шестнадцатеричную системы счисления.
12. Какое число следует и предшествует каждому из приведенных ниже чисел:
а) 1213; б) 9А16; в) 10011012; г) 7358 д) 23410; е) 1356; ж) 2589?
13. Выполнить арифметические действия:
а) 468 + 1358; г) 2128 – 1658; ж) 128 · 1378;
б) 10101112 + 1012; д) 10110012 – 101112; з) 110121012;
в) 1АЕ16 + 32В16; е) 10C16 – D16; и) 3D16 · 1A16.
14. Создать и заполнить в MS Excel таблицу, записав десятичные числа в заданном компьютерном представлении:
15. Создать и заполнить в MS Excel таблицу, записав десятичные числа в прямом, обратном и дополнительных кодах в 16-разрядном компьютерном представлении:
16. Представить заданные числа в форме с плавающей запятой и нормализованном виде:
а) 234,67810; б) 102410; в) 3576910; г) 0,12610;
д) 1112; е) 478; ж) 1DC16.
17. Произвести сложение, вычитание и умножение следующих чисел в формате с плавающей запятой:
а) 0,537 · 102 и 0,25 · 101; б) 0,1 · 21 и 0,1 · 2-2.
Глава 3
Кодирование текстовой и графической информации
3.1. Кодирование текстовой информации
При вводе текстовой информации в компьютер символы (буквы, цифры, знаки) кодируются с помощью различных кодовых систем, которые состоят из набора кодовых таблиц, размещенных на соответствующих страницах стандартов для кодирования текстовой информации. В таких таблицах каждому символу присваивается определенный числовой код в шестнадцатеричной или десятичной системе счисления, т. е. кодовые таблицы отражают соответствие между изображениями символов и числовыми кодами и предназначены для кодирования и декодирования текстовой информации. При вводе текстовой информации с помощью клавиатуры компьютера каждый вводимый символ подвергается кодированию, т. е. преобразуется в числовой код, при выводе текстовой информации на устройство вывода компьютера (дисплей, принтер или плоттер) по числовому коду символа строится его изображение. Присвоение символу определенного числового кода является результатом соглашения между соответствующими организациями разных стран. В настоящее время нет единой универсальной кодовой таблицы, удовлетворяющей буквам национальных алфавитов разных стран.
Современные кодовые таблицы включают в себя международную и национальную части, т. е. содержат буквы латинского и национального алфавитов, цифры, знаки арифметических операций и препинания, математические и управляющие символы, символы псевдографики. Международная часть кодовой таблицы, базирующаяся на стандарте ASCII (American Standard Code for Information Interchange), кодирует первую половину символов кодовой таблицы с числовыми кодами от 0 до 7F16, или в десятичной системе счисления от 0 до 127. При этом коды от 0 до 2016 (0 ÷ 3210) отведены функциональным клавишам (F1, F2, F3 и т. д.) клавиатуры персонального компьютера. На рис. 3.1 приведена международная часть кодовых таблиц, основанная на стандарте ASCII. Ячейки таблиц пронумерованы соответственно в десятичной и шестнадцатеричной системе счисления.
а)
б)
Рис 3.1. Международная часть кодовой таблицы (стандарт ASCII) с номерами ячеек, представленных в десятичной (а) и шестнадцатеричной (б) системе счисления
Национальная часть кодовых таблиц содержит коды национальных алфавитов, которую называют также таблицей наборов символов (charset).
В настоящее время для поддержки букв русского алфавита (кириллицы) существует несколько кодовых таблиц (кодировок), которые используются различными операционными системами, что является существенным недостатком и в ряде случаев приводит к проблемам, связанным с операциями декодирования числовых значений символов. В табл. 3.1 приведены названия кодовых страниц (стандартов), на которых размещены кодовые таблицы (кодировки) кириллицы.
Таблица 3.1Одним из первых стандартов кодирования кириллицы на компьютерах был стандарт КОИ8-Р. Национальная часть кодовой таблицы этого стандарта приведена на рис. 3.2.
Рис. 3.2. Национальная часть кодовой таблицы стандарта КОИ8-Р
В настоящее время применяется и кодовая таблица, размещенная на странице СР866 стандарта кодирования текстовой информации, которая используется в операционной системе MS DOS или сеансе работы MS DOS для кодирования кириллицы (рис. 3.3, а).