Conversion en base n - Calculateur en ligne
Utilisation de ce calculateur
Les chiffres utilisés
Pour les bases de 2 à 10, on utilise les chiffres arabes 0123...789.
Pour les bases de 10 à 36, on utilise en plus, les symboles ABCD...XYZ (lettres en majuscules) qui représentent les nombres en base décimale 11,12,13 ...34,35,36. Pour ces bases (10 à 36), si vous saisissez des nombres avec des lettres en minuscules, elle seront automatiquement converties en lettres majuscules.
Pour les bases de 36 à 62, on complète avec les lettres en minuscules (abcdef...xyz). Par exemple, pour la base 62, on utilise les chiffres : 0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz soit, 62 symboles au total. Notez que dans ce cas, la casse est importante. Par exemple, A=10 mais a=37.
Les systèmes de numération
Le système décimal
Le système décimal (ou à base 10) qui nous est familier, utilise 10 symboles (0, 1, 2, 3 ... 8, et 9) pour représenter n'importe quel nombre. Dans ce système, les puissances de 10 occupent une position centrale et sont utilisées pour former les nombres,
`10^0, 10^1, 10^2, 10^3...` c'est à dire `1, 100, 100, 1000...`
Le nombre 278 peut s'écrire ainsi,
`278 = 2*10^2 + 7*10^1 + 8*10^0`
On remarque que,
le chiffre des unités est multiplié par `10^0`,
le chiffre des dizaines est multiplié par `10^1`,
le chiffre des centaines est multiplié par `10^2`,
le chiffre des milliers est multiplié par `10^3`et ainsi de suite.
Le système binaire
Le système binaire (ou à base 2), largement utilisé en informatique, utilise deux symboles (0 et 1) pour représenter un nombre quelconque. Voici quelques exemples,
101 en base 2 = 5 en base 10 (`= 1*2^2 + 0*2^1 + 1*2^0`)
10011 en base 2 = 19 en base 10 (`= 1*2^4 + 0*2^3 + 0*2^2 + 1*2^1 + 1*2^0`)
De la même manière, concernant le nombre en base binaire,
le premier chiffre (en partant de la droite) est multiplié par `2^0`,
le deuxième chiffre est multiplié par `2^1`,
le troisième chiffre est multiplié par `2^2`,
le quatrième chiffre est multiplié par `2^3` et ainsi de suite.
Le système hexadécimal
Le système hexadécimal (ou à base 16) utilise 16 symboles 012...89ABCDEF pour représenter les nombres. A noter que les symboles A jusqu'à F représentent les valeurs de 11 à 15. On aurait d'ailleurs pu aussi bien choisir ab...ef ou adopter d'autres symboles.
Exemples de nombres en base hexadécimale,
125 en base 16 = 293 en base 10 (`= 1*16^2 + 2*16^1 + 5*16^0`)
1fa6 en base 16 = 8102 en base 10 (`= 1*16^3 + 15*16^2 + 10*16^1 + 6*16^0`)
On retrouve le même schéma que pour les autres bases, concernant le nombre en base hexadécimale,
le premier chiffre (en partant de la droite) est multiplié par `16^0`,
le deuxième chiffre est multiplié par `16^1`,
le troisième chiffre est multiplié par `16^2`,
le quatrième chiffre est multiplié par `16^3` et ainsi de suite.
Convertir un nombre de la base n vers la base 10 ?
Convertissons le nombre 1206 de la base 9 vers la base 10.
Selon la formule utilisée ci-dessus (généralisée à la base 9), on doit utiliser les puissance de 9 comme suit,
1206 en base 9 = 897 en base 10 (`= 1*9^3 + 2*9^2 + 0*9^1 + 6*9^0`)
Un autre exemple: convertissons le nombre A160B de la base 12 vers la base 10.
Le sytème à base 12 utilise les chiffres suivants : 0, 1, 2 ... 8,9, A (valeur 10) et B (valeur 11).
On peut donc convertir comme suit,
A160B en base 12 = 209963 en base 10 (`= 10*12^4+ 1*12^3 + 6*12^2 + 0*12^1 + 11*12^0`)
Convertir un nombre de la base 10 vers la base n
Ecrire un nombre P en base n revient à trouver les coefficients des puissances successives de n tels que
`P = c_0 * n^0 + c_1 * n^1 + c_2 * n^2 +` ... avec `c_0, c_1, c_2...` les chiffres en base n de P.
Illustrons cela avec un exemple. Comment convertir 1205 vers la base 9 ?
On commence par écrire les puissances de 9. On s'arrête à la puissance immédiatement supérieure à notre nombre 1205 : `1 (9^0), 9 (9^1), 81 (9^2), 729 (9^3), 6561 (9^4 > 1205)`
On constate que `9^3 < 1205 < 9^4`. Nous savons d'ores et déjà que 1205 aura 4 chiffres en base 9 et va s'écrire sous la forme,
`\text{Equation (1): }1205 = a_3 * 9^3 + a_2 * 9^2 +a_1 * 9^1 + a_0 * 9^0` c'est à dire que 1205 est représenté par "`a_3a_2a_1a_0`" en base 9 avec,
`a_0, a_1, a_2, a_3` des chiffres de la base 9 c'est à dire des chiffres parmi 0,1, ...7 et 8.
On peut écrire l'équation (1) sous la forme,
`1205 = a_3 * 9^3 + r` avec r < `9^3` cela ne vous rappelle rien ? il s'agit de la division euclidienne de 1205 par `9^3` c'est à dire 729.
En faisant la division euclidienne, on obtient 1205 ÷ 729 = 1 reste 476
On a donc `a_3 = 1` et `r = a_2 * 9^2 + a_1 * 9^1 + a_0 * 9^0 = 476`
De même, on peut écrire,
`476 = a_2 * 9^2 + s` avec s < `9^2`, de la même manière, il s'agit de la division euclidienne de 476 par `9^2` c'est à dire 81.
En faisant la division euclidienne, on obtient 476 ÷ 81 = 5 reste 71
On déduit `a_2 = 5` et `s = a_1 * 9^1 + a_0 * 9^0 = 71`
On réitère la même chose,
71 ÷ 9 = 7 reste 8, on déduit, a_1 = 7 et a_0 = 8
On a prouvé successivement,
`a_3 = 1`
`a_2 = 5`
`a_1 = 7`
`a_0 = 8`
1205 en base 10 s'écrit 1578 en base 9.
Pour généraliser et récapituler les étapes de la méthode expliquée,
Pour convertir un nombre P de la base 10 vers la base n
- Ecrire les puissances de n (base cible)
- Encadrer P par 2 puisssances successives de n (au passage, cela détermine le nombre de chiffres de P en base n)
- Faire la division euclidienne de P par la puissance de n immédiatement inférieure à n (valeur basse de l'encadrement effectué dans l'étape ci-dessus)
- Le quotient de cette division est égale au premier chiffre de P (en partant de la gauche) en base n
- Répéter ces divisions en utilisant à chaque fois le reste comme nouveau dividende et la puissance immédiatement inférieure comme diviseur jusqu'à atteindre la puissance 1 de n c'est à dire n (comme diviseur) !
Convertir un nombre de la base n vers la base m
La méthode la plus simple est de passer par la base 10 à savoir:
- Convertir d'abord le nombre de la base n vers la base 10 en suivant la première méthode ci-dessus
- Convertir ensuite le nombre obtenu en base 10 vers la base m en suivant la seconde méthode ci-dessus
Exemple : convertir 1526 de la base 7 vers la base 2
1526 en base 7 = 608 en base 10
608 en base 10 = 1001100000 en base 2
On déduit,
1526 en base 7 = 1001100000 en base 2
Convertir un nombre à virgule de la base 10 vers la base n
Afin de simplifier, nous allons prendre n=16 et P=220,412 , P étant le nombre décimal à convertir en base 16. La méthode de calcul explicitée est facilement généralisable à une base n quelconque.
On a,
`P = (220,412)_10`
Nous cherchons à réécrire P avec une précision de 3 chiffres après la virgule en base 16.
Ce qui revient à trouver `c_2, c_1,c_0, c_(-1), c_(-2), c_(-3)`, des chiffres de la base 16, tels que
`P = (c_2c_1c_0.c_(-1)c_(-2)c_(-3))_16`
Remarque : la partie entière de P en base 16 (partie de P avant la virgule) a forcément 3 chiffres ou moins car en base 10, la partie entière (=220) a trois chiffres. D'où la recherche de trois chiffres `c_2, c_1,c_0` pour la partie entière et pas plus !
`P = c_2*16^2+c_1*16^1+c_0*16^0+c_(-1)*16^(-1)+c_(-2)*16^(-2)+c_(-3)*16^(-3)`
Afin de ne garder que des puissances positives ou nulles de 16, on multiplie les deux membres par `16^3` , d'où,
`16^3*P = c_2*16^5+c_1*16^4+c_0*16^3+c_(-1)*16^2+c_(-2)*16^1+c_(-3)*16^0`
Nous avons donc ramené le problème au cas expliqué ci-dessus, à savoir, il s'agit de convertir le nombre entier `16^3*P` (donc sans virgule) de la base 10 vers la base 16. Cf paragraphe "Convertir un nombre de la base 10 vers la base n".
En effectuant des divisions successives de `16^3*P = 16^3*220,412=902808` par les puissances de 16, on obtient,
`(16^3*P)_10 = (DC697)_(16)`
Pour obtenir P en base 16, il suffit de décaler la virgule de 3 positions à partir de la droite,
`P_10 = (DC,697)_(16)`
On peut le montrer d'une manière plus formelle comme ceci,
`(16^3*P)_10 = (DC697)_(16)`
`(16^3)_10*P_10 = (DC697)_(16)`
`(1000)_16*P_10 = (DC697)_(16)`
`P_10 = (DC697)_(16) / (1000)_16`
`P_10 = (DC,697)_(16)`
Pour conclure et généraliser, pour convertir un nombre P avec virgule de la base 10 vers la base 16, avec un résultat d'une précision de k chiffres après la virgule, suivre ces étapes,
- Calculer `16^k*P` et garder sa partie entière
- Convertir cette dernière à la base 16 par la méthode des divisions successives par les puissances de 16 (Cf détails de la méthode applicable aux nombres entiers ci-dessus)
- Insérer une virgule après le k-ième chiffre en partant de la droite
Programmation
Python
Ce programme en python convertit un nombre écrit en base décimale vers une une autre base.
import string
digs = string.digits + string.ascii_letters
def int2base(x, base):
if x < 0:
signe = -1
elif x == 0:
return digs[0]
else:
signe = 1
x *= signe
chiffres = []
while x:
chiffres.append(digs[int(x % base)])
x = int(x / base)
if signe < 0:
chiffres.append('-')
chiffres.reverse()
return ''.join(chiffres)