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

Как преобразовать число с плавающей точкой в ​​двоичный?

Кто-нибудь может рассказать мне, как я могу преобразовать это число с плавающей запятой: 12.25 в двоичный? Я знаю, как преобразовать "12", но не 0,25

Любая помощь очень ценится. Благодаря

4b9b3361

Ответ 1

Продолжайте умножать число после десятичного на 2, пока оно не станет 1.0:

0.25*2 = 0.50
0.50*2 = 1.00

и результат в обратном порядке равен 0,01

Ответ 2

Рассмотрим пример ниже

Конвертировать 2.625 в двоичный файл

Рассмотрим целую и дробную части отдельно.

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.

Смотрите эту ссылку для получения дополнительной информации.

Ответ 3

(d означает десятичную, b означает двоичную)

  • 12.25d - ваш поплавок.
  • Вы пишете 12d в двоичном формате и удаляете его из своего поплавка. Только остаток (.25d) будет оставлен.
  • Вы пишете точку.
  • Пока остаток (0.25d) не равен нулю (и/или вам нужно больше цифр), умножьте его на 2 (- > 0.50d), удалите и запишите цифру слева от точки (0) и продолжайте новый остаток (.50d).

Ответ 4

Значение с плавающей запятой хранится в формате IEEE 754, поэтому мы не можем напрямую преобразовать его как целое число, символ в двоичный файл.

Но мы можем преобразовать float в двоичный файл через указатель.

#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

Пробелы добавлены для пояснения, они не включены в программу.

Ответ 5

x = float(raw_input("enter number between 0 and 1: "))

p = 0
while ((2**p)*x) %1 != 0:
    p += 1
    # print p

    num = int (x * (2 ** p))
    # print num

    result = ''
    if num == 0:
        result = '0'
    while num > 0:
        result = str(num%2) + result
        num = num / 2

    for i in range (p - len(result)):
        result = '0' + result
    result = result[0:-p] + '.' + result[-p:]

print result #this will print result for the decimal portion