Подтвердить что ты не робот

Как преобразовать из десятичного числа в формат с плавающей запятой с одиночной точностью IEEE 754?

Как я могу вручную изменить десятичный (базовый 10) номер в формат с плавающей запятой с одиночной точностью IEEE 754? Я понимаю, что есть три части, знак, экспоненту и мантисса. Я просто не совсем понимаю, что представляют собой две последние части.

4b9b3361

Ответ 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.