Формат представления чисел с плавающей запятой
Назначение сервиса. Онлайн-калькулятор предназначен для представления вещественных чисел в формат с плавающей точкой.Правила ввода чисел
- Числа в десятичной системе счисления могут вводиться как без дробной, так и с дробной частью (234234.455).
- Числа в двоичной системе счисления состоят только из цифр 0 и 1 (10100.01).
- Числа в шестнадцатеричной системе счисления состоят из цифр 0 ... 9 и букв A ... F.
- Можно также получать обратное представление кода (из шестнадцатеричной системы счисления в десятичную, 40B00000)
Решение. Представим число 133.54 в нормализованном экспоненциальном виде:
1.3354*102 = 1.3354*exp102
Число 1.3354*exp102 состоит из двух частей: мантиссы M=1.3354 и экспоненты exp10=2
Если мантисса находится в диапазоне 1 ≤ M < 10, то число считается нормализованным.
Представление числа в денормализованном экспоненциальном виде.
Если мантисса находится в диапазоне 0,1 ≤ M < 1, то число считается денормализованным.
Представим число в денормализованном экспоненциальном виде: 0.13354*exp103
Пример №2. Представить двоичное число 101.102 в нормализованном виде, записать в 32-битом стандарте IEEE754.
Решение.
Представление двоичного числа с плавающей точкой в экспоненциальном нормализованном виде.
Сдвинем число на 2 разрядов вправо. В результате мы получили основные составляющие экспоненциального нормализованного двоичного числа:
Мантисса M=1.011
Экспонента exp2=2
Преобразование двоичного нормализованного числа в 32 битный формат IEEE 754.
Первый бит отводится для обозначения знака числа. Поскольку число положительное, то первый бит равен 0
Следующие 8 бит (с 2-го по 9-й) отведены под экспоненту.
Для определения знака экспоненты, чтобы не вводить ещё один бит знака, добавляют смещение к экспоненте в половину байта +127. Таким образом, наша экспонента: 2 + 127 = 129
Переведем экспоненту в двоичное представление.
Оставшиеся 23 бита отводят для мантиссы. У нормализованной двоичной мантиссы первый бит всегда равен 1, так как число лежит в диапазоне 1 ≤ M < 2. Для экономии, единицу не записывают, а записывают только остаток от мантиссы: 01100000000000000000000
Для перевода целой части необходимо умножить разряд числа на соответствующую ему степень разряда.
01100000000000000000000 = 222*0 + 221*1 + 220*1 + 219*0 + 218*0 + 217*0 + 216*0 + 215*0 + 214*0 + 213*0 + 212*0 + 211*0 + 210*0 + 29*0 + 28*0 + 27*0 + 26*0 + 25*0 + 24*0 + 23*0 + 22*0 + 21*0 + 20*0 = 0 + 2097152 + 1048576 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 = 3145728
В десятичном коде мантисса выражается числом 3145728
В результате число 101.10 представленное в IEEE 754 c одинарной точностью равно 01000000101100000000000000000000.
Переведем в шестнадцатеричное представление.
Разделим исходный код на группы по 4 разряда.
010000001011000000000000000000002 = 0100 0000 1011 0000 0000 0000 0000 0000 2
Получаем число:
0100 0000 1011 0000 0000 0000 0000 0000 2 = 40B0000016