Conversion en base n - Calculateur en ligne

Convertir un nombre avec ou sans décimales d'une base vers une autre base. Ce calculateur utilise les bases binaire, décimale, hexadécimale, octale et toute base de 2 à 62.


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)

Voir aussi

Division euclidienne