Как я могу вручную изменить десятичный (базовый 10) номер в формат с плавающей запятой с одиночной точностью IEEE 754? Я понимаю, что есть три части, знак, экспоненту и мантисса. Я просто не совсем понимаю, что представляют собой две последние части.
Как преобразовать из десятичного числа в формат с плавающей запятой с одиночной точностью IEEE 754?
Ответ 1
Найдите наибольшую мощность 2, которая меньше вашего числа, например, если вы начинаете с x = 10.0, то 2 3= 8, поэтому показатель степени равен 3. Показатель смещен на 127, поэтому это означает, что показатель будет представлен как 127 + 3 = 130. Мантисса тогда равна 10,0/8 = 1,25. 1 неявно, поэтому нам просто нужно представить 0,25, что составляет 010 0000 0000 0000 0000 0000, если оно выражено как 23-битное дробное количество без знака. Битовый знак равен 0 для положительного. Итак, мы имеем:
s | exp [130] | mantissa [(1).25] |
0 | 100 0001 0 | 010 0000 0000 0000 0000 0000 |
0x41200000
Вы можете проверить представление с помощью простой программы на C, например
#include <stdio.h>
typedef union
{
int i;
float f;
} U;
int main(void)
{
U u;
u.f = 10.0;
printf("%g = %#x\n", u.f, u.i);
return 0;
}
Ответ 2
Возьмите номер 172.625. Это число - формат Base10.
Преобразование этого формата в формате base2 Для этого сначала преобразуйте 172 в двоичный формат
128 64 32 16 8 4 2 1
1 0 1 0 1 1 0 0
172=10101100
Преобразование 0.625 в двоичный формат
0.625*2=1.250 1
0.250*2=.50 0
0.50*2=1.0 1
0.625=101
Двоичный формат 172.625 = 10101100.101. Это в формате base20101100 * 2
Смена этого двоичного числа
1.0101100*2 **7 Normalized
1.0101100 is mantissa
2 **7 is exponent
добавить показатель 127 7 + 127 = 134
конвертировать 134 в двоичный формат
134=10000110
Число положительно, поэтому знак числа 0
0 |10000110 |01011001010000000000000
Объяснение: Высокий порядок бит - это знак числа. число хранится в формате знаковой величины. Показатель хранится в 8-битном формате поля, смещенном на 127 до экспонента Цифра справа от двоичной точки хранится в младшем порядке 23 бит. ПРИМЕЧАНИЕ --- Этот формат представляет собой формат с плавающей запятой IEEE 32 бит
Ответ 3
Число с плавающей запятой - это просто научная нотация. Скажем, я попросил вас выразить окружность Земли в метрах, используя научную нотацию. Вы должны написать:
4.007516 & времена; 10 7 т
Показатель просто таков: здесь сила десяти. Мантисса - это фактические цифры числа. И знак, конечно, просто положительный или отрицательный. Таким образом, в этом случае показатель равен 7, а мантисса - 4.007516.
Единственное существенное различие между IEEE754 и научной номенклатурой школьной школы состоит в том, что числа с плавающей запятой находятся в базе 2, так что это не раз десять в силу чего-то, это два раза к власти чего-то. Итак, где вы напишете, скажем, 256 в обычной человеческой научной нотации, как:
2,56 & times; 10 2 (мантисса 2.56 и показатель 2),
в IEEE754, он
1 & times; 2 8 — мантисса равна 1, а показатель степени равен 8.