web-dev-qa-db-fra.com

Comment convertir un nombre flottant en binaire?

Quelqu'un peut-il me dire comment convertir ce nombre flottant: 12,25 en binaire? Je sais comment convertir le "12" mais pas le 0,25

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

33
Slim Black

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 étant .01

24
Abhi

Considérez l'exemple ci-dessous

Convertissez 2,625 en binaire.

Nous considérerons séparément la partie entière et la partie fractionnaire.

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.

Donc 0,625 = 0,101 et 2,625 = 10,101.

Voir le lien this pour plus d'informations.

17
Govind Prabhu

(d signifie décimal, b signifie binaire)

  1. 12.25d est votre flotteur.
  2. Vous écrivez 12d en binaire et le supprimez de votre flotteur. Seul le reste (.25d) sera laissé.
  3. Vous écrivez le point.
  4. Alors que le reste (0,25d) n'est pas nul (et/ou vous voulez plus de chiffres), multipliez-le par 2 (-> 0,50d), supprimez et écrivez le chiffre à gauche du point (0) et continuez avec le nouveau reste (.50d).
13
comonad

La valeur flottante est stockée au format IEEE 754, nous ne pouvons donc pas la convertir directement comme entier, char en binaire.

Mais nous pouvons convertir float en binaire via un pointeur.

#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;
}

Sortie

0 10000001 11100000000000000000000

Espaces ajoutés pour clarification, ils ne sont pas inclus dans le programme.

4
ilango victor
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
iLabQC