Quelqu'un peut-il s'il vous plaît me dire comment puis-je convertir ce nombre float: 12,25 en binaire? Je sais comment convertir le "12" mais pas le 0.25Comment convertir un nombre flottant en binaire?
Toute aide est très appréciée. Merci
Quelqu'un peut-il s'il vous plaît me dire comment puis-je convertir ce nombre float: 12,25 en binaire? Je sais comment convertir le "12" mais pas le 0.25Comment convertir un nombre flottant en binaire?
Toute aide est très appréciée. Merci
Conserver la multiplication du nombre décimal après par deux 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 0,01
Je l'ai eu, Cela semble logique maintenant, Merci :) –
@Slim Black: Attention: cela fonctionne bien pour des nombres comme 0.25, qui ont représentations exactes en binaire, mais pas pour des nombres comme 0.1, qui ne le font pas: 0.1 * 2 = 0.2, 0.2 * 2 = 0.4, 0.4 * 2 = 0.8, 0.8 * 2 = 1.6, 0.6 * 2 = 1.2, 0.2 * 2 = 0.4, ... Il se répète indéfiniment, et le résultat est 0.0 (0011) (la partie entre parenthèses se répète). –
@Slim Black: Et notez, pour l'implémenter correctement par programmation, vous aurez besoin de l'arithmétique décimale - voir mon article http://www.exploringbinary.com/base-conversion-in-php-using-bcmath/, en particulier la section dec2bin_f().) –
(d signifie décimal, b signifie binaire)
Oui, merci pour votre réponse :) –
Et si mon flotteur est 5.1? Faire vos pas, je suis entré dans une boucle infinie, s'il vous plaît aider! – nautilusvn
@nautilusvn: parce qu'il n'y a pas de puissance de 2 qui est aussi un multiple de 10, ce nombre a une séquence infinie de chiffres. vous pourriez vouloir abandonner votre calcul quelque part. – comonad
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
OP a demandé comment le faire manuellement. –
peut-être vous voulez également ajouter la référence à l'endroit où vous l'avez obtenu. ce code python me semble familier. –
traiterai exemple
Nous considérerons la partie entière et la partie fractionnaire séparément.
The integral part is easy, 2 = 10.
Pour la partie décimale:
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.
Alors 0,625 = 0,101 et 2,625 = 10,101.
Voir le lien this pour plus d'informations.
La valeur flottante est stockée dans le format IEEE 754, de sorte que nous ne pouvons pas convertir directement un entier, un caractère en un caractère binaire. Mais nous pouvons convertir float en binaire via un 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.
Je sais est vieux, mais quelle est la valeur de ** i ** ici? – Michi
Manuellement :) Je peux le faire par programmation après cela. –
Vous voulez obtenir '1100.01'? – SLaks
Oui :) J'ai besoin de savoir comment calculer le 0,25 au binaire –