Quelqu'un peut-il me dire comment je peux 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
Quelqu'un peut-il me dire comment je peux 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
Considérez l'exemple ci-dessous
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 ce lien pour plus d'informations.
(d signifie décimal, b signifie binaire)
La valeur de float est stockée au format IEEE 754 donc nous ne pouvons pas la convertir directement comme entier, char en binaire.
Mais nous pouvons convertir le flotteur en binaire à l'aide d'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
Les espaces ajoutés à des fins de clarification ne font pas partie du programme.
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
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.