Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Машинные формы представления чисел

Существуют два основных способа представления данных в ЭВМ: с фиксированной и плавающей запятой.

Представление чисел в форме с фиксированной запятой. Для сокращения длины разрядной сетки и упрощения обработки данных положение запятой может быть зафиксировано схемотехнически. При этом в слове данных сохраняются только две структурных компоненты: поле знака и поле цифр.

± целая часть дробная часть

Определим диапазон представления чисел для этого формата.

Аmax=(2k-1)+(1-2-l),

где k - число разрядов целой, а l – дробной части числа (k+l=n).

В зависимости от размеров целой и дробной частей возможно следующее:

±,1 1...1 1
1) k=0, l=n Amax=1-2-n

± 1 1...1 1,
2) k=n, l=0 Amax=2n-1

±, 0 0...0 1
3) k=0, l=n Amin=2-n

± 0 0...0 1,
4) k=n, l=0 Amin=1

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

 

Возможно четыре формата целых чисел:

целое число;

короткое целое число;

длинное целое число;

упакованное десятичное число.

 

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

 

Упакованное десятичное число занимает 10 байтов. Это число содержит 18 десятичных цифр, расположенных по две в каждом байте. Знак упакованного десятичного числа находится в старшем бите самого левого байта. Остальные биты старшего байта должны быть равны 0.

 

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

 

 

Приведем возможные варианты представления целых чисел:

Нуль 0...0

Наименьшее положительное число 0...1

Наибольшее отрицательное число 1...1

Наибольшее положительное число 01...1

Наименьшее отрицательное число 10...01

Неопределенность 10...00

 

Упакованное десятичное число имеет следующий вид:

¦1-й байт ¦ Девять байтов ¦

+--T------+---T---T---T---T---+

¦Зн¦000000¦n17¦n16¦...¦n1 ¦n0 ¦

L--+------+---+---+---+---+----

 

На этом рисунке n0...n17 означают разряды десятичного числа. Они могут изменяться в пределах от 0000 до 1001, т.е. от 0 до 9 в десятичной системе счисления.

 

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

 

 

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

A=±mApA,

где r – основание системы счисления, в которой записано число, mA- мантисса, а рA- порядок числа А. Порядок (с учетом знака) показывает, на сколько разрядов и в какую сторону сдвинута запятая при замене формы записи числа с естественной на нормальную.

Например, А10 = 239,745 = 0,239745·103 = 239745·10-3.

Наиболее распространено и удобно для представления ограничение вида r-1≤½mA½<1.

Форма представления чисел, для которых справедливо данное ограничение, называется нормализованной. Так как абсолютное значение мантиссы в этом случае лежит в диапазоне от r-1 до 1-r-n, где n – число разрядов мантиссы без знака, то положение разрядов числа в его машинном изображении непостоянно. Отсюда и название этой формы представления чисел – с плавающей точкой. Однако реализация в ЭВМ нормализованных чисел имеет некоторые особенности. Число с плавающей точкой называется нормализованным, если целая часть мантиссы числа состоит из одной, не равной нулю, цифры.

В чем преимущества использования нормализованных чисел? В том, что для фиксированной разрядной сетки числа (т.е. для фиксированного количества цифр в числе) нормализованные числа имеют наибольшую точность. Кроме того, нормализованное представление исключает неоднозначность - каждое число с плавающей точкой может быть представлено различными (ненормализованными) способами:

123.5678·105 = 12.35678·106 = 1.235678·107 = 0.1235678·108

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

± мантисса mA ± порядок p

Для данного формата разрядной сетки можно записать следующий диапазон представления чисел:

В языках высокого уровня используется следующее представление чисел с плавающей точкой:

(знак)(мантисса)E(знак)(порядок)

Например, -5.35E-2 означает число -5.35·10-2. Такое представление называется научной нотацией.

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

- одинарной точности;

- двойной точности;

- расширенной точности.

Эти числа занимают в памяти, соответственно, 4, 8 или 10 байтов. Для упрощения операций над порядками применяют представление чисел с плавающей запятой со смещенным порядком: p¢=p+N, где N – целое положительное число (смещение), N= max(-p). Обычно N=2k, где k- число двоичных разрядов в поле цифр несмещенного порядка. В этом случае поле знака порядка избыточно, так как p¢ всегда положительно. Такие смещенные порядки называют характеристиками. Поле характеристики - это степень числа 2, на которую умножается мантисса, плюс смещение, равное 127 для одинарной точности, 1023 - для двойной точности и 16383 - для расширенной точности.

В любом из форматов старший (знаковый) бит определяет знак вещественного числа:

- 0 - положительное число;

- 1 - отрицательное число.

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

Так как для нормализованного двоичного числа целая часть всегда равна единице, то эту единицу можно не хранить. В форматах одинарной и двойной точности целая часть мантиссы не хранится. Таким образом, экономится один бит памяти.

Формат представления чисел с расширенной точностью используется для выполнения всех операций. Более того, все операции с числами выполняются только в формате с расширенной точностью. В этом формате хранится и "лишний" бит целой части нормализованного числа. Основная причина использования для вычислений расширенной точности - предохранение программы от возможной потери точности вычислений, связанной с большими различиями в порядках чисел, участвующих в арифметических операциях.

Для того, чтобы определить абсолютное значение числа с плавающей точкой, можно воспользоваться следующими формулами:

- одинарная точность: 1.(цифры мантиссы)*2(P-127)

- двойная точность: 1.(цифры мантиссы)*2(P-1023)

- расширенная точность: 1.(цифры мантиссы)*2(P-16383)

Приведем конкретный пример машинного представления числа, например, -0,875 в формате с одинарной точностью, которое в двоичном виде выглядит следующим образом:

1 01111110 11000000000000000000000

Для этого числа знаковый бит равен 1 (отрицательное число), расширенный порядок (характеристика) равен 126, мантисса - 11 (в двоичной системе счисления). Значение этого числа вычисляется:

1.11 · 2(126-127) = -1.75 · 2-1 = -0,875

 

В стандарте IEEE крайние значения порядка (характеристики) зарезервированы и не используются для представления обычных чисел. Рассмотрим некоторые особые случаи представления вещественных чисел.

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

- Наименьшее положительное число - это число, которое имеет нулевой знаковый бит, значение порядка, равное 1, и значение мантиссы, равное нулю. В зависимости от представления наименьшее положительное число имеет следующие значения: 1,17·10-38 (одинарная точность), 2.23·10-308 (двойная точность), 3.37·10-4932 (расширенная точность).

- Наибольшее отрицательное число - полностью совпадает с наименьшим положительным числом, но имеет бит знака, установленный в 1.

- Наибольшее положительное число -это число, которое имеет нулевой знаковый бит, поле порядка, в котором все биты кроме самого младшего, равны 1, и содержит единицы во всех разрядах мантиссы. В зависимости от представления наибольшее положительное число имеет следующие значения: 3.37·1038 (одинарная точность), 1.67·10308 (двойная точность), 1.2·104932 (расширенная точность).

- Наименьшее отрицательное число - полностью совпадает с наибольшим положительным числом, но имеет бит знака, установленный в 1.

- Положительная и отрицательная бесконечность - это число содержит все единицы в поле порядка и все нули в поле мантиссы. В зависимости от состояния знакового бита может быть положительная и отрицательная бесконечности. Бесконечность может получиться, например, как результат деления конечного числа на нуль.

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

- Неопределенность - содержит в поле порядка все единицы, а в поле мантиссы - число 1000..0 (для одинарной и двойной точности) или 11000..0 (для расширенной точности, так как в этом формате хранится старший бит мантиссы).

Отмеченные особые случаи могут быть наглядно представлены следующим образом:

¦0¦ 0...0 ¦ 0...0 ¦ положительный нуль

¦1¦ 0...0 ¦ 0...0 ¦ отрицательный нуль

¦0¦ 0...01 ¦ 0...0 ¦ наименьшее положительное число

¦1¦ 0...01 ¦ 0...0 ¦ наибольшее отрицательное число

¦0¦ 11...10 ¦ 1...1 ¦ наибольшее положительное число

¦1¦ 11...10 ¦ 1...1 ¦ наименьшее отрицательное число

¦0¦ 1...1 ¦ 0...0 ¦ положительная бесконечность

¦1¦ 1...1 ¦ 0...0 ¦ отрицательная бесконечность

¦1¦ 1...1 ¦ х...х ¦ нечисло

¦1¦ 1...1 ¦ 10...0 ¦ неопределенность

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



Поделиться:


Последнее изменение этой страницы: 2016-04-08; просмотров: 606; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 35.171.164.77 (0.01 с.)