ПРЕДИСЛОВИЕ
Один из важнейших элементов профессиональной квалификации
разработчика программного обеспечения (ПО) – наличие ясных пред
ставлений о выполняемой форме программы в памяти вычислитель
ной машины. Это особенно справедливо в отношении кода обрабаты
ваемых данных.
Данные с плавающей точкой используются практически во всех
областях применения вычислительных машин. Однако понятные и
полные сведения об их кодировании редко встречаются в учебниках
по программированию.
Пособие призвано восполнить отмеченный пробел. Оно представ
ляет собой законченный фрагмент учебного курса по одному из мно
гих языков программирования (например, C, C++, Java, C#).
1. ОБЩИЕ ЗАМЕЧАНИЯ
1.1. Кодирование и содержание
Одна из основных сложностей на начальных этапах изучения вы
числительных машин и программирования – осознание разницы меж
ду кодированием и содержанием.
Рассмотрим простой пример. Пусть задан код: цепочка десятич
ных цифр
0 1 0 9 0 5
Что может означать этот код
Кажется, что единственное возможное значение – это число «де
сять тысяч девятьсот пять». Но можно предложить и другие правила
интерпретации (правила декодирования) этой цепочки (рис. 1.1).
Используя правило 1, получим, что код 010905 означает «день
первое сентября 2005 года» (День Знаний), а используя правило 2,
получим, что код 010905 означает «день девятое января 1905 года»
(Кровавое Воскресенье русской истории).
Важная деталь: часть информации представлена элементами (знач
ками) кода в явном виде (например, номер месяца в году), а другая
часть информации подразумевается (например, две старшие цифры
номера года).
Можно предложить и другие, более изощренные правила декоди
рования. Например: код 010905 означает «книга номер 01 на полке
09 стеллажа 05 некоторой (конкретной!) библиотеки». И тогда код
010905 может «скрывать в себе» и один из шедевров мировой лите
ратуры, и бульварный роман.
Так что же означает код 010905 «на самом деле» Ответ: ничего
не означает (или, что то же самое: означает все, что угодно).
Таким образом, сам по себе код (цепочка символов) не означает
ничего. В справедливости этого утверждения легко убедиться, вспом
нив о так называемых «мертвых языках», правила интерпретации
которых утеряны человечеством.
Код приобретает конкретный смысл только в сочетании с конк
ретным правилом интерпретации (правилом декодирования). Очевид
но, что если код составлен по одним правилам, а декодируется по
другим, то изначальный смысл (изначальное содержание) теряется.
Эта «беллетристическая» преамбула в полной мере относится и
к цепочкам битов, которые хранятся в памяти вычислительных ма
шин.
1.2. Кодирование целых значений
Продолжим рассмотрение цепочек значков. Пусть имеется цепоч
ка из трех десятичных цифр и лидирующего знака ‘+’