Может ли кто-нибудь сказать мне, как я могу преобразовать это число с плавающей запятой: 12,25 в двоичный? Я знаю, как преобразовать "12", но не 0,25
Любая помощь горячо приветствуется. Спасибо
Может ли кто-нибудь сказать мне, как я могу преобразовать это число с плавающей запятой: 12,25 в двоичный? Я знаю, как преобразовать "12", но не 0,25
Любая помощь горячо приветствуется. Спасибо
Продолжайте умножать число после запятой на 2, пока оно не станет 1,0:
0.25*2 = 0.50
0.50*2 = 1.00
и результат в обратном порядке: 0,01
Рассмотрим пример ниже
Целую и дробную часть будем рассматривать отдельно.
The integral part is easy, 2 = 10.
Для дробной части:
0.625 × 2 = 1.25 1 Generate 1 and continue with the rest.
0.25 × 2 = 0.5 0 Generate 0 and continue.
0.5 × 2 = 1.0 1 Generate 1 and nothing remains.
Таким образом, 0,625 = 0,101 и 2,625 = 10,101.
См. эту ссылку для получения дополнительной информации.
(d означает десятичный, b означает двоичный)
Значение с плавающей запятой хранится в формате IEEE 754, поэтому мы не можем преобразовать его напрямую, как целое число, char в двоичное.
Но мы можем преобразовать число с плавающей запятой в двоичное через указатель.
#include <stdio.h>
int main()
{
float a = 7.5;
int i;
int * p;
p = &a;
for (i = sizeof(int) * 8 - 1; i >= 0; i--)
{
printf("%d", (*p) >> i & 1);
}
return 0;
}
Вывод
0 10000001 11100000000000000000000
Пробелы добавлены для уточнения, они не включены в программу.