Comment convertir nombre float en binaire?

quelqu'un peut-il s'il vous plaît me dire comment je peux convertir ce nombre flottant: 12.25 en binaire? Je sais comment convertir le "12", mais pas de 0,25

Toute aide est très appréciée. Merci

33
demandé sur Abimaran Kugathasan 2010-10-17 21:57:07

5 réponses

continuez à multiplier le nombre après la décimale par 2 jusqu'à ce qu'il devienne 1.0:

0.25*2 = 0.50
0.50*2 = 1.00

et le résultat est dans l'ordre inverse .01

22
répondu Abhi 2014-06-04 10:06:29

(d signifie décimal, b signifie binaire)

  1. 12.25 d est votre flotteur.
  2. Vous écrivez 12d en binaire et le supprimer de votre flotteur. Seul le reste.( 25d) seront laissées.
  3. Vous écrivez le point.
  4. alors que le reste (0,25 d) n'est pas zéro (et/ou vous voulez plus de chiffres), multipliez-le par 2 ( - > 0.50 d), supprimer et écrire le chiffre à gauche du point (0), et continuer avec le nouveau reste (.50d).
13
répondu comonad 2016-08-08 19:46:19

Considérer l'exemple ci-dessous

Convertissez 2.625 en binaire.

nous considérerons l'entier et la fraction séparément.

The integral part is easy, 2 = 10. 

Pour la partie fractionnaire:

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.

Afin de 0,625 = 0.101, et 2.625 = 10.101.

Voir lien pour plus d'informations.

13
répondu Govind Prabhu 2017-11-04 15:52:27

la valeur float est stockée dans le formate IEEE 754 de sorte que nous ne pouvons pas couvrir directement comme entier,char à binaire. Mais on peut convertir float en binaire par pointeur.

main()
{
float a=7.5;
int i,*p; p=&a;
for (sizeof(int)*8-1;i>=0;i--)
printf("%d",(*p)>>i&1);
}
OUTPUT::0 10000001 11100000000000000000000---space for better clarification  not included in part of the program.
3
répondu ilango victor 2016-02-11 18:04:32
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
1
répondu iLabQC 2015-01-17 16:50:09