Информатика. Технические средства
74
Пример 7. Выполнить деление двух нормализованных двоичных
числа, пользуясь алгоритмом машинной арифметики:
101
22
101001,0 ⋅
раз-
делить на
11
22
10111,0
−
⋅
.
Решение:
Найдем порядок результата: 101 – (–11) = 101 + 11 = 1000.
Делим мантиссы (столбиком):
0,1001 0,111 0,10(1001)
=
. Мантисса
получилась нормализованной, но (!) периодической. Что же делать?
Когда говорят о точности представления десятичных веществен-
ных чисел, нужно помнить следующее: десятичное число невозможно
записать точно в любом из машинных вещественных типов. Объясняется
это тем, что конечные десятичные дроби часто оказываются бесконеч-
ными периодическими двоичными дробями (см. упражнения по пере-
воду правильных дробей из десятич
ной системы счисления в двоич-
ную). Следовательно, в нормализованном виде такое число будет иметь
бесконечную мантиссу и не может быть представлено точно. При запи-
си подобной мантиссы в память компьютера число округляется.
Если под мантиссу отведено n бит и n+1 значащая цифра двоичной
нормализованной мантиссы равна 0, то цифры начиная с n+1-й просто
отбрасываются, если же n+1
-я цифра равна единице, то к целому числу,
составленных из n значащих цифр мантиссы, прибавляется единица.
Запись чисел в файле данных
При записи данных на диск первым пишет
ся самый младший байт чис-
ла, затем более старший, и т. д. Таким образом, при чтении числа
в формате «Integer» из файла данных сначала читается младший байт,
затем старший. При чтении числа в формате single первым стоит млад-
ший байт мантиссы, затем более ст
арший байт, а последний из 4 байтов
содержит знаковый бит и первые 7 бит порядка. Наиболее распростра-
ненные программы, предоставляющие возможности для просмотра
и редактирования файлов данных в кодах ЭВМ, – это файловые менед-
жеры Far и Total Commander, а также битовый редактор HexEdit. В них
наиболее часто применяется шестнадцатеричное представление чисел.
Рассмотрим представление чисел целых форматов в файлах данных.
Формат Shorti
nt занимает всего один байт и поэтому последова-
тельность чисел этого формата соответствует последовательности байтов.
Формат Integer занимает два байта. В качестве примера рассмотрим
последовательный вывод двух целых чисел: 2315 и 1280 в файл данных
типа Integer. Переведем эти числа в двоичную и шестнадцатеричную сис-
темы счисления: 2315
10
= 100100001011
2
= 90B
16
; 1280
10
= 10100000000
2
=
= 500
16
. В файл данных будет выведено: 0B 09 00 05.
Для проверки напишите самостоятельно программу на Паскале,
выводящую в файл данных числа формата Integer и сравните результа-
ты работы программы и данные, полученные вручную.