понедельник, 16 ноября 2009 г.

1. Нормализованные числа и алгоритмы их преобразования

Вещественное число X может быть представлено в двух формах - естественной и нормализованной. В естественной форме у X имеется целая и дробная части, между которыми помещается разделитель (запятая или точка), например, 123,4567. Однако такая запись неудобна для слишком больших или, наоборот, слишком малых чисел. Кроме того, использование такой формы (она называется также "представление числа с фиксированной запятой") в компьютере вызвало бы снижение точности вычислений из-за необходимости приведения в соответствие разрядов обрабатываемых чисел и связанных с этим округлений или могло бы породить ситуацию, называемую переполнением, когда старший разряд числа не умещается в отведенной разрядной сетке. По указанным причинам вещественные числа в компьютере представляются в нормализованном виде (другое название - "представление числа с плавающей запятой"), главным достоинством которой является автоматическое масштабирование числа на каждом этапе обработки, что, с одной стороны, обеспечивает максимально возможную точность вычислений, а с другой - избавляет от необходимости принимать меры по предотвращению переполнения (за исключением достаточно экзотических ситуаций с выходом числа за отведенную разрядную сетку). По сути, это универсальная форма записи всех чисел, кроме определенных как "тип: целые" (например, Integer, Word или Byte в PASCAL'е).
Сначала познакомимся с необходимыми понятиями применительно к десятичной системе счисления.
Число X10 называется нормализованным, если оно представлено в виде
X10 = [+|-] M10• 10 [+|-] k10
В этой записи M10 называется мантиссой нормализованного числа; значения мантиссы лежат в интервале 0,1 M10<1. k10 называется порядком нормализованного числа - это целое положительное десятичное число. Примеры: - 123410 = - 0,1234•104; 0,0345610 = 0,3456•10-1.
Понятие нормализованного числа следует отличать от понятия числа в нормальной форме; данная форма достаточно часто используется при записи чисел в математике, физике, технических дисциплинах и отличается от нормализованного представления тем, что мантисса лежит в интервале 1M10<10, например, kБ=1,38•10-23.
При нормализации происходит расчленение "составляющих" числа с выделением знака числа, мантиссы, знака порядка и порядка - как будет показано ниже, это создает определенные удобства при хранении и обработке чисел в компьютере.
Аналогично нормализации десятичного числа можно в нормализованной форме представить и число в произвольной системе счисления p:
Xp = [+|-] Mp • p [+|-] kp (12)
При этом значения мантиссы лежат в интервале p-1Mp<1 (т.е. первая значащая цифра мантиссы всегда ненулевая), а показатель степени представляется в системе p (kp). Например, для p = 2:
X2 = - 101,012 = - 0,101012 • 2112
Мантисса располагается в промежутке 0,12 M2<1, что соответствует десятичному интервалу 0,510M10<1.



Интересно было бы получить образование за рубежом. Как считаете реально?