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) !

Comment convertir un nombre de la base 10 vers la base 2 ?

Pour illustrer la méthode, nous allons prendre le nombre 77777 comme exemple.

Pour convertir le nombre 77777 en base 10 en un nombre en base 2, on utilise la méthode de division répétée par 2, en gardant trace des restes. Voici les étapes détaillées :

77777 / 2 = 38888 reste 1
38888 / 2 = 19444 reste 0
19444 / 2 = 9722 reste 0
9722 / 2 = 4861 reste 0
4861 / 2 = 2430 reste 1
2430 / 2 = 1215 reste 0
1215 / 2 = 607 reste 1
607 / 2 = 303 reste 1
303 / 2 = 151 reste 1
151 / 2 = 75 reste 1
75 / 2 = 37 reste 1
37 / 2 = 18 reste 1
18 / 2 = 9 reste 0
9 / 2 = 4 reste 1
4 / 2 = 2 reste 0
2 / 2 = 1 reste 0
1 / 2 = 0 reste 1

En lisant les restes à l'envers (du dernier au premier), nous obtenons 10010111111010001, qui est la représentation de 77777 en base 2.

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