Арифметические основы ЦВМ
Рефераты >> Программирование и компьютеры >> Арифметические основы ЦВМ

div - целочисленное деление, при котором в качестве результата представляется целая часть частного,

mod - остаток от деления целых (деление по модулю), при котором в качестве результата представляется целый остаток от деления, по абсолютной величине меньший делителя.

Примеры:

5 div 3 = 1

5 mod 3 = 2

1.5.2. Числа с плавающей запятой

В форме с плавающей запятой число представляется двумя компонентами : мантиссой и порядком. Мантисса используется для записи цифр числа, а порядок - для указания положения запятой.

Разрядная сетка машины в этом случае делится на несколько частей:

один разряд - для кодирования знака числа (это всегда самый старший, левый, разряд слова);

M разрядов - для записи мантиссы;

Р разрядов - для записи порядка (с учетом его знака).

Местоположение запятой при этом тоже строго фиксируется: считается, что мантисса всегда представляется как число, меньшее единицы, но такое, в котором первая цифра после запятой для всех абсолютно чисел отлична от нуля (единственное исключение составляет число 0). Такая форма представления мантиссы называется нормализованной. Иначе говорят, что мантисса нормализована (приведена к виду: 1 < M <= 0,1).

Ну, а если известно, что мантисса имеет вид “0,цццц ”, то ее код в машинном слове может не содержать символов “0,”, а местоположение запятой предполагается перед старшей значащей цифрой мантиссы.

Порядок Р всегда представляется целым числом со знаком + или -. А для кодирования абсолютной величины порядка остается (Р-1) цифр.

Теперь можно рассмотреть диапазон представимых чисел.

Вначале рассмотрим пример применительно к двоичной системе счисления.

Пусть m - количество разрядов мантиссы,

р - количество разрядов порядка, включая знаковый.

Тогда максимальное по абсолютной величине число будет равно

0,1111 1 * 2**(+111 1) = (1-2**(-м))*2**(2**(р-1)-1),

m цифр (p-1) цифр

или приблизительно 2**(2**(р-1)-1),

а минимальное по абсолютной величине число

0,1000 0 * 2**(-111 1) = 2**(-2**(р-1)).

m цифр (p-1) цифр

Итак, число в форме с плавающей запятой представляется последовательностью битов без каких либо явно указанных разделителей, но функционально разбитой на три группы {(знак числа, мантисса числа, порядок числа) или (знак числа, порядок числа, мантисса числа)}.

Рассмотренная форма кодирования числа приводит к следующим последствиям:

· Диапазон чисел, представимых в форме с плавающей запятой, определяется главным образом разрядностью порядка (Р).

· Разрядность мантиссы (М) определяет точное количество значащих цифр в изображении числа.

Следовательно, большинство чисел в форме с плавающей запятой представляется приближенно и причиной этого является ограниченное число разрядов мантиссы. Величина же абсолютной погрешности при приближенном представлении числа зависит как от абсолютной величины числа, так и от разрядности мантиссы и порядка.

Рассмотрим примеры. При этом для простоты положим, что числа представляются в десятичной системе счисления, количество цифр мантиссы равно 4, количество цифр порядка - 2, знак порядка записывается как в математике, а знак числа мы не изображаем, полагая все числа положительными.

Пример 1. Пусть имеется число 12,42=0,1242*10**(+2).

В заданном формате оно представляется цепочкой символов

1 2 4 2 + 0 2

При этом

· цепочка “1 2 4 2” представляет мантиссу, т.е. в математическом смысле число 0,1242 ,

· а цепочка “+ 0 2” - порядок - целое положительное число 2.

Тогда ближайшее большее этого число может быть задано цепочкой

1 2 4 3 + 0 2

и оно равно 0,1243*10**(+2)= 12,43.

Таким образом, ближайшие числа на числовой оси, которые различимы при кодировании их в форме с плавающей запятой для данного примера различаются на 0,01 (абсолютная погрешность представления всех чисел между 12,42 и 12,43 имеет верхнюю оценку 0,01).

Пример 2. Пусть имеется число 0,001242=0,1242*10**(-2).

В заданном формате оно представляется цепочкой символов

1 2 4 2 - 0 2,

а ближайшее большее этого число представляется цепочкой

1 2 4 3 - 0 2

и равно 0,1243*10**(-2)= 0,001243.

Таким образом, абсолютная погрешность представления всех чисел между 0,001242 и 0,001243 имеет верхнюю оценку 0,000001.

Пример 3. Пусть имеется число 0,1242*10**(+12).

В естественной форме записи это число 124 200 000 000, а в заданном формате оно представляется цепочкой символов

1 2 4 2 + 1 2,

а ближайшее большее этого число представляется цепочкой

1 2 4 3 + 1 2

и равно 0,1243*10**(+12)= 124 300 000 000.

Таким образом, абсолютная погрешность представления всех чисел между 124 200 000 000 и 124 300 000 000 имеет верхнюю оценку 100 000 000 = 10**8.

Обратите внимание, что в последнем примере невозможно записать ни одного числа в интервале размером 10**8.

Важный вывод, который следует из анализа формы кодирования чисел с плавающей запятой и иллюстрируется в рассмотренных примерах: числа в форме с плавающей запятой, несмотря на то что, эта форма предложена для представления в ЭВМ непрерывных величин, представляются дискретным множеством на числовой оси и располагаются на ней неравномерно.

Если изобразить на (бесконечной) числовой оси области существования чисел, то можно выделить следующие области (см. рис.):

1 2 3 4 5 6

R

МаксВещ -МинВещ 0 +МинВещ +МаксВещ

· область 1: Х<-МаксВещ - ни одного значения из области нельзя представить в машинном слове (МаксВещ - максимальное по абсолютной величине число, которое можно закодировать);

· область 2: -МаксВещ<=X<=-МинВещ - в данном интервале может быть представлено столько различных чисел, сколько их можно записать по заданной разрядности мантиссы и порядка;

· область 3: -МинВещ<X<0 - ни одного значения из этой области представить в машинном слове нельзя;

· область 4: 0<X<+МинВещ - ни одного значения из этой области представить в машинном слове нельзя;

· область 5: +МинВещ>=X>=+МаксВещ - в данном интервале может быть представлено столько различных чисел, сколько их можно записать по заданной разрядности мантиссы и порядка;

· область 6: X>+МаксВещ - ни одного значения из области нельзя представить в машинном слове (МаксВещ - максимальное по абсолютной величине число, которое можно закодировать).

Особое место занимает величина 0. Она также кодируется в форме с плавающей запятой, причем как ее порядок, так и мантисса(!) полагаются равными нулю.


Страница: