Conversion de la base 10 vers la base 16 [Résolu/Fermé]

Signaler
-
 mother fucker Jones -
Bonjour,
Comment convertir par exemple le nombre (27,189520) de labase 10 vers la base 16.
Merci de me donner la méthode, surtout pour la conversion de la partie fractionnaire ...
L'algorithme je vais pouvoir le faire une fois la méthode comprise.
En vous remerciant d'avance pour votre aide ...

wChris79



5 réponses

Messages postés
16035
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
17 septembre 2020
2 673
Remarque : il y a certaines valeurs avec un nombre fini de chiffrs après la virgule en base 10 qui ont un nombre infini de chiffres en base 16 !

Exemple simple : 0.1 --> 0.19999999999...
5
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60517 internautes nous ont dit merci ce mois-ci

mais sincérement j'ai pas bien compris la méthode ??? est ce que vous pouver m'expliquer mieu
Salut pidad, pour etre plus clair

Pour passer de la base dix à une autre on fait une division entière par l'autre base :

27: 16 on trouve 1 et il reste 11 --> donc B est le chiffre de rang 0
1: 16 on trouve 0 et reste 1 --> donc 1 est le chiffre de rang 1
on trouve donc 1B


27,189520 a 6 chiffre après la virgule donc je multiple 27.189520 par 16^6 et je trouve 456 164 450

456 164 450 : 16 on trouve 28 510 278 et reste 2 --> donc 2 est le chiffre de rang 0
28 510 278 : 16 on trouve 1 781 892 et reste 6 --> donc 6 est le chiffre de rang 2
1 781 892 : 16 on trouve 111 368 et reste 4 --> donc 4 est le chiffre de rang 3
111 368 : 16 on trouve 6 960 et reste 8 --> donc 8 est le chiffre de rang 4
6 960 : 16 on trouve 435 et reste 0 --> donc 0 est le chiffre de rang 5
435 : 16 on trouve 27 et reste 3 --> donc 3 est le chiffre de rang 6
27 : 16 on trouve 1 et reste 11 --> donc B est le chiffre de rang 7
1 : 16 on trouve 0 et reste 1 --> donc 1 est le chiffre de rang 8

ce qui donne 1B308462 et je décale la virgule de 6 cases ce qui donne 1B,308462
voila
Messages postés
16035
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
17 septembre 2020
2 673
Juste une précision : ce n'est pas parce que X a N chiffres après la virgule qu'on multiple X par 16^N, mais plutôt parce que X*16^N est entier lorsque X*16^(N-1) ne l'était pas.
Si je prends 0.125 par exemple, il y a 3 chiffres après la virgule, mais multiplier 1 fois par 16 suffit.
0.125 a 3 chiffre après la virgule donc je multiple par 16^3 ce qui donne 512. donc pas de problème, au moins on est sur que ce sera bon sans essayer toutes les puissances de 16 mais c'est vrai que dans ce cas là ca revien au même
Messages postés
16035
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
17 septembre 2020
2 673
Lorsqu'on fait de l'informatique on essaye quand même de limiter au maximum les calculs.
Exemple : 0.00390625. Avec 8 chiffres on multiplie par 16^8 et on fait la conversion de 16 777 216 alors qu'en multipliant par 16^2 seulement on aurait juste à faire la conversion de 1.
Effectivement cela revient mathématiquement au même, mais le premier donne 0.01000000 et le deuxième 0.01, faire des calculs supplémentaires pour avoir plein de 0 inutiles c'est stupide...

merci ton commentaire m'a été très utile
Messages postés
16035
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
17 septembre 2020
2 673
La partie fractionnaire c'est le même principe que la partie entière :

27,18952  
= 2.10^1 + 7.10^0 + 1.10^(-1) + 8.10^(-2) + 9.10^(-3) + 5.10^(-4) + 2.10^(-5)  
= 1.16^1 + 11.16^0 + 3.16^(-1) + 0.16^(-2) + 8.16^(-3) + 4.16^(-4) + 6.16^(-5) + 2.16^(-6)

Une manière d'arriver au résultat est de multiplier par une puissance de 16 pour enlever la partie fractionnaire en base 10, et de la remettre une fois la conversion effectuée :
27.18952 = 27.18952 * 16^6 * 16^(-6) = 456 164 450 * 16^(-6)
Si tu passes 456 164 450 en base 16 --> 1B308462, tu n'as alors plus qu'à décaler la virgule de 6 crans d'où 27.18952 --> 1B,308462
La confiance n'exclut pas le contrôle
Merci pour vos explications. J'avais un doute sur la manière de convertir la partie décimale... Maintenant je vais savoir faire cette opération. Encore merci...

wChris79