Conversion en base n - Calculateur en ligne


Avez-vous des suggestions pour améliorer cette page ?

Utilisez ce calculateur pour convertir un nombre entier d'une base à une autre. La base de départ et la base finale peuvent varier de 2 (base binaire) jusqu'à 62 en passant par 16 (base hexadécimale) et 10 (base décimale).

Au delà de la base 10, on utilise les "chiffres" abcd...xyz (lettres en minuscules). Pour les grandes bases au delà de 36, on complète avec les lettres en majuscules (ABCDEF...XYZ). Ainsi, pour la base 62, on utilise les chiffres suivants : 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ soit 62 "chiffres".

Les systèmes de numération

Le système décimal
Le système décimal (ou à base 10), que nous utilisons tous pour représenter les nombres, utilise 10 symboles (0, 1, 2, 3 ... 8, et 9). Ainsi, n'importe quel nombre peut être représenté en utilisant ces 10 symboles. Dans ce système, les puissances successives 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 2 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, on doit multiplier,
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 (0, 1, 2 ... 9, a, b, c, d, e et f) pour représenter un nombre quelconque. A noter que les symboles "a" jusqu'à "f" représentent les valeurs de 11 jusqu'à 15 (on aurait pu aussi bien choisir A, B...F ou adopter une autre convention).

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, on doit multiplier,
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 ?

On illustre la méthode avec un exemple. 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 9 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

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:
        digits.append('-')

    chiffres.reverse()

    return ''.join(chiffres)

Voir aussi

Division euclidienne