Transformer un binaire IEEE754 en float (python)
Hello !
Je cherche à transformer des binaires IEEE754 en float en python sans utiliser d'import.
J'ai déjà codé un programme qui permet de récupérer toutes les parties du code binaire pour les isoler, mais je ne comprends pas comment passer de ça à un nombre.
Voici mon code :
IEEE754 = 11001110000000011100000000000000 signe = int(IEEE754 / 10 ** 31) # On récupère le signe binexpb = int(IEEE754 / 10 ** 23) # On récupère l'exposant c = signe * 10 ** 8 binexp = binexpb - c # On enlève la valeur du signe pour obtenir le binaire de l exposant... expbrut = int(str(binexp), 2) # ... qu'on transforme en nombre décimal exp = expbrut - 127 # ... et auquel on soustrait 127 (de base pour l'exposant 0 = à l'exposant -127) pour obtenir l'exposant final m = IEEE754 - binexpb * 10 ** 23 # On récupère la mantisse mantisse = m + 10 ** 23 # On remet le 1 qui est caché comme il est obligatoire result = 0 a = 23 nbrzero = 1 g = 0 y = int(mantisse / 10 ** a) # 'y' est 1er chiffre de la mantisse mneg = mantisse for j in range(23): # Traiter chacun des 23 chiffres if y == int(1): # Si le 1er chiffre est 1... mneg = mneg - y * 10 ** a a = a - 1 y = int(mneg / 10 ** a) # On multiplie par 10 exposant 'nbrzero' # (on verra ce qu'est cette valeur plus tard) pour changer # la colonne dans laquelle j écrit les valeurs binaires) result = result * 10 ** nbrzero result = result + 1 # Puis on ajoute le 1 nbrzero = 1 else: # Sinon si le chiffre est égal à 0 mneg = mneg - y * 10 ** a a = a - 1 y = int(mneg / 10 ** a) # On ajoute 1 à 'nbrzero' pour que lorsqu'un 1 sera détecté, # la boucle repasse dans le if et écrive autant de 0 que de # fois ou la boucle est passée par le else. Cela permet aussi # de supprimer les 0 en trop qui sont à droite, car s'il # n'y a aucun 1 jusqu'à la fin, les 0 ne seront pas écrits nbrzero = nbrzero + 1 print(mantisse) print(y) print(g) print(result) print(a) print(exp)
Le résultat est affiché par print(result)
Quelqu'un peut-il m'aider, s'il vous plaît ? Merci beaucoup !
A voir également:
- Transformer un binaire IEEE754 en float (python)
- Binaire - Guide
- Citizen code python avis - Accueil - Outils
- Transformer majuscule en minuscule word - Guide
- Transformer une image en icone - Guide
- Transformer epub en kindle - Guide
2 réponses
Si tu transformes le signe et ajuste correctement l'exposant, que penses-tu de ceci?
resultat = signe * mantisse * 2**exposant