Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Вещественные числа (числа с плавающей точкой)



Знак

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

Мантисса

Поле мантиссы содержит мантиссу нормализованного числа.

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

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

Порядок

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

для 8 бит – на 127

для 11 бит – на 1023

для 15 бит – на 16383

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

Одинарная точность:

1.(цифры мантиссы)*2(P-127)

Двойная точность:

1.(цифры мантиссы)*2(P-1023)

Расширенная точность:

1.(цифры мантиссы)*2(P-16383)

Пример.

Запишите код действительного числа, интерпретируя его как величину типа float.

а) 446,15625;

Переводим десятичное число в двоичное представление.

Целая часть от деления Остаток от деления
446 div 2 = 223 446 mod 2 = 0
223 div 2 = 111 223 mod 2 = 1
111 div 2 = 55 111 mod 2 = 1
55 div 2 = 27 55 mod 2 = 1
27 div 2 = 13 27 mod 2 = 1
13 div 2 = 6 13 mod 2 = 1
6 div 2 = 3 6 mod 2 = 0
3 div 2 = 1 3 mod 2 = 1
1 div 2 = 0 1 mod 2 = 1

Остаток от деления записываем в обратном порядке. Получаем число в 2-ой системе счисления: 110111110

446 = 1101111102

Для перевода дробной части числа последовательно умножаем дробную часть на основание 2. В результате каждый раз записываем целую часть произведения.

0.15625*2 = 0.3125 (целая часть 0)

0.3125*2 = 0.625 (целая часть 0)

0.625*2 = 1.25 (целая часть 1)

0.25*2 = 0.5 (целая часть 0)

0.5*2 = 1 (целая часть 1)

Получаем число в 2-ой системе счисления: 00101

0.15625 = 0.001012

446.15625 = 110111110.001012 = 1.10111110001012*28

Знак S = 0

Порядок P = 8 + 127 = 135 =

Мантисса: 1011111000101

Для числа с двойной точностью мантисса занимает 52 разряда. Добавляем нули.

Мантисса: 1011 1110 0010 1000 0000 0000 0000 0000 0000 0000 0000 0000 0000

Запишем число:

0 10000000111 1011 1110 0010 1000 0000 0000 0000 0000 0000 0000 0000 0000 0000

В шестнадцатеричной системе счисления: 407BE2800000000016





Дата публикования: 2015-10-09; Прочитано: 293 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...