Формы представления вещественных чисел
Для представления вещественных чисел используется логарифмическое представление, или форма с плавающей точкой, или экспоненциальная форма. Она была введена в обиход в 1937 году немецким ученым Конрадом Цузе.
Формальная запись такой формы имеет вид:
x = m× be,
где x – вещественное число,
m – мантисса числа,
b – основание системы счисления,
e – порядок (целое).
При обозначении основания b и порядка e используется, как правило, десятичная система счисления. При обозначении мантиссы m применяется, как правило, та система счисления, в которой представлено само число x.
Данная форма позволяет перемещать десятичную запятую в вещественном числе вправо и влево, не меняя истинного значения числа.
Пример 4. Выполнить представление в логарифмической форме десятичного числа 34,28, превратив его в правильную дробь.
Для решения этой задачи надо десятичную запятую в числе сместить как минимум на 2 разряда влево, т.е. в таком случае уменьшить число на 2 порядка. Для сохранения первоначального значения числа введем в его запись порядок, равный +2. Имеем: 34,28 = 0,3428×10+2. Здесь 0,3428 – мантисса числа, 10 – основание системы счисления, +2 (можно просто 2) – порядок.
Пример 5. Выполнить представление в логарифмической форме двоичного числа 0,1011012, превратив его в целое число.
Для решения задачи необходимо сдвинуть десятичную запятую на 6 разрядов вправо, т.е. увеличить число на 6 порядков. Для сохранения первоначального значения числа в его запись введем порядок, равный -6. Имеем: 0,1011012 = 1011012×2-6.
Для простоты обозначения числа в логарифмической форме используют специальный разделитель – букву Е (от слова exponential, англ., - экспоненциальный). Тогда результаты из предыдущих примеров приобретут другой вид:
0,3428 ×102 ⇒ 0,3428Е2,
1011012 × 2-6 ⇒ 1011012Е-6.
В этой записи основание системы счисления b подразумевается равным основанию счисления для мантиссы m.
Разновидностью экспоненциальной формы является ее нормализованный вид. Нормализованное вещественное число в экспоненциальной форме имеет мантиссу в виде правильной дроби, у которой старший дробный разряд отличен от 0. Например, 0,2345; 0,10112; 0,ADC2316.
Разрядная сетка для вещественного числа состоит из двух частей: одна предназначена для размещения порядка, другая – для мантиссы. По одному разряду в обеих частях отводится для знака - порядка и мантиссы. Перед размещением в разрядной сетке вещественное число в обязательном порядке должно быть нормализовано.
Размещение порядка выполняется аналогично размещению целого числа (см. п. 9.3.2.1). При размещении мантиссы используется только ее дробная часть: старший числовой разряд размещается в самом левом числовом разряде отведенной под нее разрядной сетки. Если число разрядов мантиссы меньше, чем число разрядов сетки, оставшиеся разряды заполняются нулями. Если разрядов сетки не хватает, не размещенные двоичные цифры отбрасываются.
Пример 6. Пусть разрядная сетка имеет 14 двоичных разрядов, из них 5 разрядов отводятся под порядок, 9 – под мантиссу. Пусть под знак отводятся самые левые разряды в соответствующих частях разрядной сетки. Разместить в сетке двоичное число 0,111012Е-4.
Результат показан на рисунке:
номера разрядов | ||||||||||||||
содержимое разрядов |
Здесь разряды 9 – 13 отведены под порядок, 0 – 8 – под мантиссу. Знаковые разряды, соответственно, имеют номера 13 и 8: поскольку порядок отрицателен, разряд 13 содержит 1; мантисса положительна, поэтому разряд 8 равен 0. В разрядах 9 – 11 размещено значение порядка в двоичной системе счисления. Оставшийся «лишним» разряд 12 заполнен 0. В разрядах 7 – 3 помещено значение мантиссы. Оставшиеся незанятыми разряды 0 – 2 заполнены 0.
Пример 7. Пусть разрядная сетка имеет 14 двоичных разрядов, из них 5 разрядов отводятся под порядок, 9 – под мантиссу. Пусть под знак отводятся самые левые разряды в соответствующих частях разрядной сетки. Разместить в сетке двоичное отрицательное число -0,11101101112Е4.
Результат показан на рисунке:
номера разрядов | ||||||||||||||
содержимое разрядов |
Здесь знаковые разряды имеют значения, противоположные предыдущему примеру. Поскольку число разрядов мантиссы превышает вместимость разрядной сетки, часть из них потеряна: так, вместо мантиссы 0,1110110111 размещена мантисса 0,11101101. Таким образом, при размещении вещественных чисел возможна потеря информации, что приводит к неточным вычислениям на компьютере. Напомним, что часть информации теряется при переводе чисел в двоичную систему счисления. Для повышения точности вычислений рекомендуется использовать типы данных с повышенной разрядностью, например, для Турбо-Паскаля тип long integer вместо integer.
Коды представления числовых данных в АЛУ
Для представления данных числовых типов существуют специальные коды, которые призваны облегчить выполнение арифметических операций:
1. прямой код есть двоичный эквивалент числа;
2. обратный код строится только для отрицательного числа -х. Пусть двоичное значение числа –х расположено в n двоичных разрядах. Тогда значение обратного кода для х (обозначим \х) определяется по формуле:
\х = 2n – х – 1.
Это преобразованный прямой код, в котором все числовые разряды инвертируются, т.е. 1 преобразуются в 0, 0 превращается в 1;
3. дополнительный код строится только для отрицательного числа –х. Пусть двоичное значение числа –х расположено в n двоичных разрядах. Тогда значение дополнительного кода для х (обозначим /х) определяется по формуле:
/х = 2n – х.
Это есть преобразованный обратный код, к которому прибавляется 1.
Очевидно, в силу приведенных выше формул верно следующее:
х + \х = 2n –1.
Последнее соотношение есть формальное определение взаимно дополнительных пар чисел. Оно позволяет быстро получить значение обратного кода для любого числа с помощью кодовых таблиц Штибица. Рассмотрим эту задачу для десятичных цифр.
В таблице приведены прямые, обратные, дополнительные коды, полученные по приведенным формулам при n = 4, а также коды Штибица для десяти десятичных цифр:
Десятичная цифра | Прямой код | Обратный код | Дополнительный код | Код Штибица |
Зададимся кодом Штибица, равным 1000. Его целочисленный эквивалент равен 8 (напомним, что это коды со сдвигом на 3). Второе двоичное число, составляющее взаимно дополнительную пару чисел с числом 1000, есть 0111. Это и есть обратный код для числа 8 (см. для анализа таблицу).
Дата добавления: 2015-03-03; просмотров: 2063;