Calculer entièrement en héxadécimal

Discussion générale entre passionnés et amateurs de mathématiques sur des sujets mathématiques variés
frost
Messages: 4
Enregistré le: 05 Mai 2008, 17:41

Calculer entièrement en héxadécimal

par frost » 05 Mai 2008, 18:05

Bonjour à tous,

Je ne suis pas vraiment un pationné des mathématiques, j'utilise simplement les maths en programmation pour diverses taches et aujourd'hui je suis tombé sur un problème.

J'essaie de coder des valeurs entièrement en héxa décimal et je vais vous montré ce que j'arrive à faire et ce qui me dérange.

Le nombre 95 peut s'écrire en décimal comme ceci :
95
950 x 10^-1
9500 x 10^-2
etc...

En partant du fait que :
950x10^-1 est en fait ab x b^-1 avec b qui représente la base de calcul

On peut écrire :
95 = 1520x16^-1 avec b=16 pour l'héxadécimal
Ce qui se traduit par :
95 = $5F = $5F0 x F^-1

Jusque là pas de souci, tout ce passe aussi facilement qu'en décimal
95
950 x 10^-1
9500 x 10^-2

$5F
$5F0 x F^-1
$5F00 x F^-2

La simplification se fait même à l'oeil nu, tellement c'est facile.

Mais voilà mon problème : bien que ça permette d'afficher quelque chose de rapidement compréhensible par un programme drone, je ne vois pas comment traduire certaines valeurs sans ajouter un facteur d'erreur.

En fait, je n'arrive pas à trouver un calcul qui permette de transformer systématiquement un variable en donnée héxadécimale.

Par exemple, prenons la valeur 3,14.

Je pourrais la multiplier autant de fois que je voudrais par 16, je n'arriverai jamais à obtenir une écriture aussi simple que 314x10^-2.

Quelqu'un a-t-il une idée de transformation qui me permette de transformer rapidement un tel nombre en valeur héxa (la plus juste possible évidament).



Avatar de l’utilisateur
leon1789
Membre Transcendant
Messages: 5475
Enregistré le: 27 Nov 2007, 16:25

par leon1789 » 05 Mai 2008, 19:13

Ton problème d'approximation est classique sur les nombres flottants que l'on change de base.

3.14 (en base 10) = 3,2 3D70A 3D70A ... (en hexa)

Du coté gauche, il y a deux chiffres après la virgule, à droite il y en a une infinité périodique : c'est comme ça et on ne peut rien y changer.

Si tu prends 3,23 (en hexa) alors le nombre décimal correspondant est 3.1367....
Si tu prends 3,24 (en hexa) alors le nombre décimal correspondant est 3.1406....
Et oui, il y a un saut, mais on n'y peut rien.

Ta question est la même que celle-ci :
>

A la rigueur, tu peux essayer la mise en fraction : 3.14 = 314 / 100 = 157/50 (en base 10) = 9D / 32 (en hexa)

Voir aussi les fractions continues : Pi = 3.1415626... ~~ 355/113 (en décimal) = 163 / 71 (en hexa)

frost
Messages: 4
Enregistré le: 05 Mai 2008, 17:41

par frost » 06 Mai 2008, 11:37

Effectivement... Merci pour ta réponse, je crois que mon programme aurait besoin simplement lui permettant de faire des calculs sur des fractions.
Et c'est vrai que d'une base à l'autre, certains nombre ne sont qu'approximation.

Merci encore pour ta réponse.

 

Retourner vers ⚜ Salon Mathématique

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 23 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite