Российский государственный гуманитарный университет
Опубликован: 13.07.2022 | Доступ: свободный | Студентов: 258 / 9 | Длительность: 11:54:00
Специальности: Программист
Лекция 2:

Кодирование чисел и текста

< Лекция 1 || Лекция 2: 123456 || Лекция 3 >

Если 1 \le m < p, то такое представление числа x называется нормализованным, или нормальным, а если \frac{1}{p}\le m<1, то денормализованным, или субнормальным.

Число, представленное в нормальной или субнормальной форме, называется, соответственно, нормализованным или субнормальным (денормализованным).

В экспоненциальной форме числа представляются в формате m+eq, m-eq, - m+eq или - m-eq, где q \ge 0. Если p \ne 10, то числа p и q могут оставаться в десятичном виде.

Пример 9. Представим числа в нормализованном виде:

  1. 43000 = 4,3+e4; 0,00003 = 3-e05; - 1 = - 1+e0 (p = 10);
  2. 1000,1_2 = 1,0001_2 * 2^3; 0,0000000(1)_2 = 1,(1)_2 * 2^{- 8};
  3. - a2e_{16} = - a,2e_{16} * 16^2.

Пример 10. Перейдем от экспоненциального формата к представлению в p-ичном виде:

  1. 2,3456701+e10 = 23456701000; 3,14151-e02 = 0,0314151;
  2. 1,0(1001)_2 * 2^3 = 1010,(0110)_2; 1,001_2 * 2^{- 5}= 0,00001001_2;
  3. 2,fed1_{16} * 16^{- 3} = 0,0002fed1_{16}.

Пример 11. Представим десятичное число 22,3 в денормализованном виде. Имеем: 22,3 = 0,223 * 10^2. Поэтому мантисса числа 22,3 в субнормальной форме равна 0,223, а порядок равен 2.

В двоичной системе счисления

22,3 = 10110,0(1001)_2 = 0,10110100(1001)_2 * 2^5.

Отметим, что целая часть мантиссы ненулевого двоичного нормализованного числа всегда равна 1. Соответственно, первым знаком после запятой ненулевого двоичного субнормального числа является 1.

Операции с нормализованными числами

Рассмотрим арифметические операции с нормализованными числами. Операции сложения и вычитания производятся с помощью операции выравнивания - приведения к большему порядку. Для операций умножения и деления такого выравнивания не требуется.

Пусть x = mp^q и y = np^s - нормализованные числа, где m, n, q, s, - целые, 1 \le | m | < p для x \ne 0, 1 \le | n | < p для y \ne 0.

Тогда

x + y = (m + np^{s - q})p^q; x - y = (m - np_{s - q})p^q = (mp^{q - s}- n)p^s;

x * y = (m * n)p^{q + s}; x   y = (m   n)p^{q - s}, если y /ne 0.

После выполнения арифметической операции производится операция приведения результата к нормальной форме. Аналогичным образом выполняются операции с субнормальными числами.

Пример 12. Для десятичных чисел имеем:

  1. 9e+2 + 9,8e+3 = (0,9 + 9,8) * 10^3 = 10,7 * 10^3 = 1,07e+4;
  2. 2,5e-2 - 2,4e+2 = (0,00025 - 2,4) * 10^2 = - 2,39975e+2;
  3. 4,1e+3 * 3,1e+5 = 4,1 * 3,1 * 108 = 12,71 * 10^8 = 1,271e+9;
  4. 1e+3   (9,9e+5) = (1   9,9) * 10^{- 2}= 0,(10) * 10^{- 2}= 1,(01)e-3.

Пример 13. Для двоичных чисел аналогичным образом получаем:

  1. 1,1 * 2^3 + 1,1 * 2^2 = (1,1 + 0,11) * 2^3 = 10,01 * 2^3 = 1,001 * 2^4;
  2. 1 * 2^{- 1}- 1 * 2^2 = (0,001 - 1) * 2^2 = - 0,111 * 2^2 = - 1,11 * 2;
  3. 1,01 * 2^3 * 1,1 * 2^5 = (1,01 * 1,1) * 2^8 = 1,111 * 2^8;
  4. 1 * 2^3   (1,1 * 2^5) = (1   1,1) * 2^{- 2}= 0,(10) * 2^{- 2}= 1,(01) * 2^{- 3}.

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

Пусть x^* - (приближенное) представление ненулевого числа x. Величина |x-x^*| называется абсолютной погрешностью представления, а величина \frac{x-x^*}{x} - его относительной погрешностью.

Пример 14. Пусть x = 3,14159 и x^* = 3,142. Тогда абсолютная и относительная погрешности равны, соответственно, 0,00041 и \frac{41}{314159}, или 0,000130507... Из значения относительной погрешности следует, что верными в представлении являются 3 значащие цифры, т. е. 3,14. Относительная погрешность не изменится для чисел x = 314,159 и x^* = 314,2, а абсолютная погрешность увеличится в 100 раз.

Представление ненулевых конечных нормализованных чисел

Рассмотрим методы представления действительных чисел в типах данных short (с половинной точностью), float (с одинарной точностью), double (с двойной точностью) и long (с двойной расширенной точностью). Ниже приведена таблица числа разрядов, которые отводятся на хранение знака, порядка и дробной части мантиссы в этих типах данных (табл. 2.3).

Таблица 2.3. Число разрядов для хранения знака, порядка и мантиссы
Тип Знак Порядок Мантисса Общее число разрядов
short 1 5 10 16
float 1 8 23 32
double 1 11 52 64
long 1 15 64 80

Пусть ненулевое действительное число x в нормализованной двоичной форме имеет вид (- 1)^s * (1 + f) * 2^q, где

s=\begin{cases}
0, & \quad \text{если}\; x\ge0\\ 
1, & \quad \text{если}\; x<0
\end{cases}

f - дробная часть мантиссы и q - целое число.

В старшем разряде типа данных хранится число s.

В разрядах, предназначенных для хранения порядка, хранится двоичное представление смещенного порядка, который обозначается e (от англ. exponent) и который в десятичной форме имеет вид:

e = bias + q,

где через bias обозначается величина смещения. Смещение используется для того, чтобы величина e была неотрицательной. Пусть k - число разрядов, которые используются для хранения порядка. Тогда

bias = 2^{k - 1} - 1.

Таким образом, для типов данных short, float, double и long значение bias соответственно равно 15, 127, 1023 и 16383 (см. табл. 2.3).

< Лекция 1 || Лекция 2: 123456 || Лекция 3 >