Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Хранение в ЭВМ дробных чисел




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

Представление числа включает в себя:

— знак числа;

— значение порядка;

— значение мантиссы.

Рассмотрим хранение дробного числа в коротком формате (рис. 2.5).

 

Зн Порядок Мантисса  
  Первый байт   Второй байт Третий байт Четвертый байт  
                                                               
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b
                                                                       

Рис. 2.5

Знак числа (на рисунке он обозначен символом Зн) представлен одним битом и равен 0, если число - положительное, и равен 1, если число -отрицательное.

Для хранения порядка выделяется 8 битов (7 битов первого байта и один старший бит второго байта числа). Порядок числа представляется в двоичной системе счисления. С помощью восьми битов можно представлять числа от 0 до 255. Это означает, что значением порядка является целое число от -128 до 127. Для того чтобы не хранить знак порядка, последний представляется с избытком - смещенный порядок. Показателем избытка (смещение порядка) является число 127. Значение смещенного порядка образуется сложением значения действительного порядка с показателем избытка.

Мантисса представляется в двоичной системе счисления и занимает 23 двоичных разряда (короткий формат).

Точка всегда подразумевается перед самым левым битом. Соответственно этому значения цифр представляются в двоичных позициях мантиссы слева направо: 2-1,2-2,..., 2-23.

Числа хранятся в нормализованном виде и мантисса принимает значения на полусегменте [1,2).

Рассмотрим процесс нормализации числа. Первоначально порядок считается равным 0, а его код в представлении числа равен 127 (0+127).

Первый случай: число меньше 1. Процесс нормализации заключается в сдвиге разделительной точки числа вправо и в одновременном уменьшении значения порядка на число сдвигов до тех пор, пока мантисса не будет располагаться на полусегменте [1,2).

Второй случай: число больше или равно 2. Процесс нормализации заключается в сдвиге разделительной точки числа влево и в одновременном увеличении значения порядка на число сдвигов до тех пор, пока мантисса не будет располагаться на полусегменте [1,2).

Третий случай: число располагается на полусегменте [1,2). В этом случае нормализация не требуется.

Если число нормализовано, то старший бит мантиссы всегда равен 1 и поэтому в его хранении нет необходимости.

Отрицательные дробные числа не представляются в дополнительном коде. В этом случае знак числа равен 1.

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

Процедура получения представления дробного числа, заданного в десятичной системе счисления, следующая:

1. переведем исходное десятичное число в двоичную систему счисления. При переводе определим точность перевода, для этого рассмотрим 2 случая:

1.1. Абсолютная величина исходного числа больше либо равна единице. В

этом случае точность перевода m определяется из следующего равенства: m+n+ 1=25; m – точность перевода кол-ва, разрядов дробной части и искомого 2 числа; n +1 – кол-во разрядов в целой части и искомого двоичного числа; m =24- n; n – номер старшего разряда. Для того чтобы определить точность перевода m, необходимо перевести целую часть, затем определить номер старшего разряда n и затем воспользоваться выражением m =24- n, для определения точности перевода.

1.2. Значение десятичного исходного числа по абсолютной величине

меньшей единицы. Для определения точности перевода необходимо подсчитать количество нулей, которые получаем в дробной части искомогодвоичного числа, расположенных между разделительной точкой и первой единицей. Эту единицу можно отыскать, просматривая искомое число от разделительной точки вправо. Количество нулей – l. 0.00…01… Тогда точность перевода m будет выражаться как m = l +25.

2. Округление числа. Для того чтобы округлить число, нужно к полученному числу прибавить единицу. По весу равной единице младшего разряда. Младший разряд равен – m. После выполнения сложения разряд – m отбрасывается.

3. Нормализация числа. В результате нормализации необходимо получить число, которое будет располагаться на полусегменте от 1 до 2-x: [1;2), т.е. x ≥1, но x <2. Это достигается путем перемещения разделительной точки, при этом изменение значения числа компенсирует изменение порядка. Значение порядка равно нулю (к =0).

3.1. Если значение числа ≥2, то разделительная точка перемещается влево.

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

3.2. Исходное число <1, в этом случае разделительная точка перемещается

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

4. Нахождение смещенного порядка. Для нахождения смещенного порядка

необходимо к найденному абсолютному порядку прибавить число 127, затем полученное десятичное число необходимо перевести в двоичную систему счисления и дополнить двоичное число незначащими нулями до разрядности 8. Полученный порядок называется смещенным. Max значение смещенного порядка 255, min=0, т.е. смещенный порядок хранится в формате целого двоичного числа с фиксирующей точкой без знака. Абсолютный порядок может принимать значение от -127 до +128, т.е.(-127,128).

5. Разместим число в памяти. В 7 бите 0 байта будет располагаться знак

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

0-го байта и в 7 бите 1-го байта. Мантисса числа занимает 23 бита и занимает с 0 по 6 бит 1-го байта и 23 байт полностью.

.

Пример 2.14. Представим в памяти ЭВМ десятичное число 10.6.

 

1. Переведем число из десятичной системы счисления в двоичную систему счисления:

10.610= 1010.(1001)2 =1010.1001100110011001100112.

2. Округлим число:

+1010.1001100110011001100112

0.000000000000000000001 2

1010.1001100110011001101002.

 

3. Нормализуем число:

1010.100110011001100110102= 1.010100110011001100110102 ∙2310.

4. Отбросим старший разряд:

1.01010011001100110011010 →.01010011001100110011010.

5. Определим двоичный код порядка:

310+ 12710= 13010=100000102.

 

6. Определим знаковый разряд: знаковый разряд положительного числа равен 0.

Представление указанного числа в памяти ЭВМ показано на рис. 2.6 (шестнадцатеричное представление числа в памяти: 4129999а).

 

Зн Порядок Мантисса  
  Первый байт   Второй байт Третий байт Четвертый байт  
                                                               
                                                               
              а
                                                                       

Рис. 2.6

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...