Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

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




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

N = M ´ (2 k)10 = M ´ (10 k)2 ,

где M – мантисса числа; 2k – характеристика; k – порядок числа (целое число).

Мантисса числа является правильной дробью (|M| < 1). Мантисса содержит цифры числа, а с помощью порядка указывается положение разделительной точки.

Например, двоичное число 1011.012 можно представить следующим образом:

1011.012 = 0.01011012 ´ (25)10.

Если в разряде с номером –1 мантиссы располагается единица (|M| = 0.1...), то число N имеет нормализованное представление.

Например, двоичное число 1011.012 имеет нормализованное представление:

1011.012 = 0.1011012 ´ (24)10.

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

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

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

знак числа (мантиссы);

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

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

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

 

Зн Порядок Мантисса
  Первый байт Второй байт Третий байт Четвертый байт
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

 

Рис. 5.7

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

Для хранения порядка выделяется 8 битов (7 битов первого байта и один старший бит второго байта числа). Порядок хранится в виде смещенного порядка. Для получения смещенного порядка необходимо воспользоваться выражением:

s = k + d,

где s – значение смещенного порядка, k – значение абсолютного порядка, d – смещение порядка (для короткого формата смещение порядка равно 127). Смещенный порядок хранится в формате целого двоичного числа с фиксированной точкой без знака. С помощью восьми битов можно представлять смещенный порядок от 0 до 255. Это означает, что значением абсолютного порядка нормализованного двоичного числа с плавающей точкой являются целые числа от -127 до 128. Использование смещенного порядка упрощает операции сравнения, сложения и вычитания над порядками, так как операции необходимо выполнять с неотрицательными числами.

Мантисса представляется в двоичной системе счисления и занимает 23 двоичных разряда (короткий формат). Старший разряд мантиссы (разряд с номером –1) не хранится, так как его значение у нормализованного числа всегда равно 1.

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

Нормализованное число двойной точности представляет собой 64-разрядное нормализованное число со знаком, 11-разрядным смещенным порядком и 52-разрядной мантиссой (старший разряд мантиссы не хранится).

Для хранения чисел с плавающей точкой может использоваться также и расширенный формат, позволяющий хранить ненормализованные числа в виде 80-разрядного числа со знаком, 15-разрядным смещенным порядком и 64-разрядной мантиссой.

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

1. Перевод исходного десятичного числа в двоичную систему счисления. При переводе необходимо определить точность перевода. Рассмотрим два случая.

1.1. Абсолютная величина исходного числа не меньше единицы. В этом случае точность перевода m определяется из равенства:

m + n + 1=25; m = 24 – n,

где m – точность перевода, количество разрядов дробной части искомого числа; n + 1 – количество разрядов целой части искомого двоичного числа (n – номер старшего разряда). Для того чтобы определить точность перевода m, необходимо перевести целую часть исходного числа в двоичную систему счисления, определить номер старшего разряда n полученного двоичного числа и затем воспользоваться выражением для определения точности перевода.

1.2. Значение десятичного исходного числа по абсолютной величине, не меньшей единицы. Для определения точности перевода в этом случае необходимо подсчитать количество нулей l, которые располагаются в дробной части искомого двоичного числа, расположенных между разделительной точкой и первым разрядом, равным единице. Эту единицу можно отыскать, просматривая искомое число от разделительной точки вправо (например, для числа 0.000011012 l = 4). Тогда точность перевода m будет определяться выражением:

m = l + 25.

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

3. Нормализация числа. В результате нормализации числа необходимо получить мантиссу, которая будет располагаться на полусегменте от 0.5 до 1 – x: [0.5;1), т.е. x ≥ 0.5, но x < 1. Это достигается перемещением разделительной точки. Изменение значения числа компенсируется изменением порядка.

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

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

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

3.2. Если исходное число меньше 0.5, то в этом случае разделительная точка перемещается вправо и значение порядка уменьшается на величину, равную количеству разрядов, на которых переместится разделительная точка.

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

4. Нахождение смещенного порядка. Для нахождения смещенного порядка необходимо к найденному абсолютному порядку прибавить число 127, затем полученный смещенный порядок необходимо перевести в двоичную систему счисления и дополнить полученное двоичное число незначащими нулями до разрядности 8. Максимальное значение смещенного порядка равно 255. Минимальное значение смещенного порядка равно 0. Смещенный порядок – неотрицательное число и хранится в формате восьмиразрядного целого двоичного числа с фиксированной точкой без знака. Абсолютный порядок может принимать значение от -127 до +128.

5. Размещение нормализованного двоичного числа с плавающей точкой в памяти.

Пример 5.23. Представим в коротком формате десятичное число 6.6.

1. Перевод исходного десятичного числа 10.610 в двоичную систему счисления:

10.610= 1010.(1001)2 =1010.1001100110011001100112.

2. Округление числа:

1010.1001100110011001100112

+ 0.0000000000000000000012

1010.1001100110011001101002.

3. Нормализация числа:

1010.100110011001100110102= 0.1010100110011001100110102´2410.

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

410 + 12610 = 13010 = 100000102.

5. Размещение нормализованного двоичного числа с плавающей точкой в памяти(рис. 5.8, шестнадцатеричное представление числа 4129999а в памяти).

 


 

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

 

Рис. 5.8

 

Вопросы для повторения

1) Определите понятие системы счисления.

2) В чем различие числа и его записи?

3) В чем различие между позиционными и непозиционными системами счисления?

4) Привести примеры представления чисел в позиционной системе счисления.

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

6) В чем суть представления чисел в 2-й, 8-й, 16-й системы счисления?

7) Как перевести число из 2-й системы счисления в 8-ю и 16-ю?

8) Как перевести число из 16-й системы в 8-ю и 2-ю?

9) Как перевести число из 2-й 8-й и 16-й систем счисления в 10-ю систему счисления?

10) Как перевести целое число из десятичной системы счисления в 2-ю систему счисления.

11) Как перевести дробное число из десятичной системы счисления в систему счисления с основанием q.

12) Как перевести дробное число из десятичной системы счисления в систему 2-ю и 8-ю системы счисления.

13) Как перевести дробное число из десятичной системы счисления в 16-ю систему счисления.

14) Перевести число 0.35 в 2-ю системы счисления?

15) Перевести число 0.35 в 8-ю систему счисления?

16) Перевести число 0.35 в 16-ю систему счисления?

17) Как получить дополнительный код числа?

18) Представить числа 12, 13, -34, 127, в дополнительном коде.

19) Найти значение в прямом коде числа 100100112.

20) Как хранятся в ЭВМ правильные дроби.

21) Зачем необходим смещенный порядок?

22) Что представляет мантисса числа?

23) Какой алгоритм преобразования дробных чисел.

24) Что такое точность перевода дробных чисел.

25) Представить число - 0.23 в коротком формате.

26) Представить число - 23.23 в коротком формате.

 

 







Дата добавления: 2014-11-12; просмотров: 1076. Нарушение авторских прав


Рекомендуемые страницы:


Studopedia.info - Студопедия - 2014-2020 год . (0.008 сек.) русская версия | украинская версия