Algo pour calculer un nombre decimal en base b
Convertissez instantanément un nombre décimal en base 2, 8, 10, 16 ou toute base comprise entre 2 et 36. Cet outil applique l’algorithme classique de divisions successives pour la partie entière et de multiplications successives pour la partie fractionnaire, puis illustre la décomposition des chiffres avec un graphique interactif.
Vous pouvez saisir un nombre positif ou négatif avec partie décimale.
Nombre maximal de chiffres après la virgule dans la base cible.
Comprendre l’algo pour calculer un nombre decimal en base b
La conversion d’un nombre décimal vers une base b fait partie des fondamentaux en algorithmique, en architecture des ordinateurs, en cybersécurité et en traitement des données. Que vous travailliez en base 2 pour comprendre les bits, en base 8 pour certains systèmes historiques, en base 16 pour l’hexadécimal ou dans toute autre base positionnelle, le principe est toujours le même : chaque chiffre représente une puissance de la base choisie. L’intérêt de connaître cet algorithme dépasse le simple exercice scolaire. En pratique, il permet de lire des dumps mémoire, d’interpréter des adresses, de compresser certaines écritures et de vérifier des calculs numériques avec rigueur.
En base 10, nous utilisons les chiffres de 0 à 9. En base 2, seuls 0 et 1 sont autorisés. En base 16, on emploie 0 à 9 puis A à F pour représenter les valeurs 10 à 15. L’idée générale reste identique : un nombre est une somme pondérée de chiffres multipliés par des puissances de la base. Par exemple, le nombre décimal 345 peut s’écrire 3×10² + 4×10¹ + 5×10⁰. En base 16, la représentation change, mais la logique positionnelle reste exactement la même.
Le principe mathematique d’une base positionnelle
Dans une base b, un nombre composé de chiffres an … a1 a0 vaut :
a_n×b^n + … + a_1×b^1 + a_0×b^0
Pour la partie fractionnaire, on ajoute des puissances négatives :
a_-1×b^-1 + a_-2×b^-2 + …
C’est ce cadre mathématique qui justifie l’algorithme. Pour trouver la partie entière dans la base cible, on effectue des divisions successives par b. Pour trouver la partie fractionnaire, on effectue des multiplications successives par b. Ces deux mécanismes exploitent directement le système positionnel.
Algorithme pour la partie entiere
La partie entière se convertit grâce aux divisions successives. On divise le nombre par la base cible, on note le reste, puis on recommence avec le quotient entier obtenu. Les restes lus de bas en haut forment l’écriture finale.
- Prendre l’entier décimal N.
- Diviser N par b.
- Noter le reste r, avec 0 ≤ r < b.
- Remplacer N par le quotient entier.
- Répéter jusqu’à obtenir un quotient nul.
- Lire les restes dans l’ordre inverse.
Exemple rapide : convertir 345 en base 16.
- 345 ÷ 16 = 21, reste 9
- 21 ÷ 16 = 1, reste 5
- 1 ÷ 16 = 0, reste 1
En lisant les restes de bas en haut, on obtient 159. Donc 34510 = 15916.
Algorithme pour la partie fractionnaire
Pour la partie après la virgule, on procède par multiplications successives. Cette fois, on multiplie la fraction par b, on extrait la partie entière obtenue, puis on recommence avec la nouvelle fraction résiduelle.
- Prendre la fraction décimale F, avec 0 ≤ F < 1.
- Calculer F × b.
- Le chiffre suivant est la partie entière du résultat.
- Conserver la partie fractionnaire restante.
- Répéter jusqu’à obtenir 0, ou jusqu’à atteindre la précision voulue.
Exemple : convertir 0,625 en base 2.
- 0,625 × 2 = 1,25 → chiffre 1
- 0,25 × 2 = 0,5 → chiffre 0
- 0,5 × 2 = 1,0 → chiffre 1
On obtient donc 0,101. Ainsi, 0,62510 = 0,1012.
Quand la conversion se termine et quand elle se repete
Un point essentiel en algorithmique est de savoir qu’une écriture fractionnaire ne se termine pas toujours. En base 10, le nombre 1/3 s’écrit 0,333…, donc il est périodique. De la même manière, dans une base b, certaines fractions ont une écriture finie et d’autres non. La propriété dépend de la décomposition du dénominateur en facteurs premiers par rapport à la base.
Par exemple :
- 0,5 se termine en base 10 et en base 2 car 1/2 est compatible avec ces bases.
- 0,1 en décimal devient une écriture périodique en base 2, ce qui explique pourquoi certains langages affichent des erreurs d’arrondi.
- 1/8 se termine très bien en base 2 car 8 est une puissance de 2.
C’est l’une des raisons pour lesquelles il est utile de régler une précision maximale dans un calculateur comme celui-ci. Quand l’écriture est infinie, on tronque ou on arrondit à un nombre de chiffres donné.
Pseudo-code simple de l’algorithme
Voici la logique conceptuelle employée par la majorité des implémentations :
- Séparer le nombre en partie entière et partie fractionnaire.
- Convertir l’entier par divisions successives.
- Convertir la fraction par multiplications successives.
- Assembler les deux parties avec le signe initial.
Un pseudo-code compact pourrait être résumé ainsi :
- Si l’entier vaut 0, écrire 0.
- Tant que l’entier est supérieur à 0, stocker les restes de entier mod b.
- Tant que la fraction n’est pas nulle et que la précision n’est pas atteinte, multiplier par b, extraire l’entier, puis continuer avec le résidu.
Cette méthode est déterministe, facile à coder en JavaScript, Python, C, Java ou pseudo-langage scolaire, et elle correspond exactement à ce que l’on enseigne en algorithmique des systèmes de numération.
Tableau comparatif des bases les plus utilisees
Le tableau suivant présente des données exactes utiles pour comparer les bases courantes. La colonne « bits par chiffre » est calculée par la formule log2(b). Elle permet d’évaluer la densité d’information de chaque base.
| Base | Chiffres disponibles | Bits par chiffre | Usage classique |
|---|---|---|---|
| 2 | 0-1 | 1,0000 | Logique numérique, circuits, bits |
| 8 | 0-7 | 3,0000 | Systèmes historiques, permissions Unix |
| 10 | 0-9 | 3,3219 | Calcul humain, comptabilité, mesures |
| 16 | 0-9, A-F | 4,0000 | Programmation, mémoire, couleurs web |
| 32 | 0-9, A-V | 5,0000 | Encodages textuels et identifiants |
| 36 | 0-9, A-Z | 5,1699 | URL courtes, références alphanumériques |
Ces valeurs montrent pourquoi l’hexadécimal est si apprécié en informatique : chaque chiffre hexadécimal correspond exactement à 4 bits. De même, chaque chiffre octal correspond à 3 bits. Cette relation directe simplifie énormément les conversions mentales entre binaire et représentations plus compactes.
Exemple detaille : 345,625 converti dans plusieurs bases
Le nombre 345,625 est très pratique pour l’apprentissage, car sa partie fractionnaire se convertit proprement dans certaines bases. Voici un tableau exact pour comparer les résultats.
| Base cible | Representation | Verification |
|---|---|---|
| Base 2 | 101011001.101 | 256 + 64 + 16 + 8 + 1 + 1/2 + 1/8 = 345,625 |
| Base 8 | 531.5 | 5×64 + 3×8 + 1 + 5×1/8 = 345,625 |
| Base 10 | 345.625 | Représentation native |
| Base 16 | 159.A | 1×256 + 5×16 + 9 + 10×1/16 = 345,625 |
Ce tableau illustre une idée très importante : le nombre mathématique reste le même, seule son écriture change. Une conversion de base ne modifie pas la valeur, elle modifie uniquement la notation.
Applications concretes en informatique et en sciences
- Programmation système : lecture d’adresses mémoire, masques binaires, registres processeur.
- Réseaux : compréhension des sous-réseaux, calculs sur les adresses IP et notations binaires.
- Web : interprétation des couleurs hexadécimales comme #2563eb.
- Stockage : représentation compacte d’identifiants, de hash et de clés.
- Mathématiques discrètes : étude des systèmes de numération et des propriétés de divisibilité.
Dans tous ces domaines, comprendre l’algo pour calculer un nombre decimal en base b évite de traiter la conversion comme une boîte noire. Vous gagnez en intuition, en capacité de vérification et en rapidité de débogage.
Erreurs frequentes a eviter
- Lire les restes dans le mauvais sens pour la partie entière. Ils doivent être lus du dernier au premier.
- Confondre quotient et reste lors des divisions successives.
- Oublier que les chiffres au-delà de 9 deviennent A, B, C, etc. pour les bases supérieures à 10.
- Supposer qu’une fraction se termine toujours. Beaucoup d’écritures sont périodiques.
- Négliger les erreurs d’arrondi quand on implémente l’algorithme avec des nombres flottants.
Dans un contexte de développement, il est souvent pertinent de fixer une tolérance numérique ou d’utiliser des bibliothèques à précision arbitraire lorsque la fidélité est critique.
Pourquoi l’hexadecimal et le binaire dominent-ils autant
Le binaire est la langue native des circuits numériques parce qu’un transistor distingue naturellement deux états stables. L’hexadécimal s’impose ensuite comme une couche de lecture humaine pratique : un seul chiffre hexadécimal code exactement 4 bits, ce qui simplifie les regroupements. Ainsi, un octet de 8 bits s’écrit avec seulement 2 chiffres hexadécimaux. Cette relation parfaite explique son omniprésence dans les dumps mémoire, les codes couleur, les adresses machine et de nombreux protocoles.
À l’inverse, le décimal reste dominant dans la vie courante parce qu’il est historiquement adapté au calcul humain. Le rôle d’un bon algorithme de conversion est donc de faire le pont entre l’intuition décimale et la représentation machine.
Conseils pour apprendre durablement l’algorithme
- Commencez par des entiers simples en base 2 et en base 16.
- Vérifiez toujours votre réponse en re-développant les puissances de la base.
- Travaillez ensuite les fractions comme 0,5 ; 0,25 ; 0,625 ; puis des cas périodiques comme 0,1.
- Comparez plusieurs bases pour un même nombre afin de développer votre intuition.
- Codez vous-même la méthode en JavaScript ou Python pour mémoriser la logique.
Une fois cette méthode maîtrisée, vous pourrez aussi traiter le chemin inverse : convertir un nombre écrit en base b vers le décimal, ou même d’une base quelconque vers une autre via une étape intermédiaire.