Site

. Les News
. Le Forum
. L'équipe et les projets
. Les Tutoriaux
. IRC
. La boite à outils
. Les routines et algos indispensables
. Les liens


Les News de TI-FR







 

 



CONVERSION DE BASES

L'une des premieres étapes de la programmation est la maitrise des bases. Eh oui, c'est des mathematiques, mais c'est vraiment un passage obligé, l'Hexadecimal, le binaire, le decimal... sont des notions à connaitre parfaitement et autant dire que si vous ne les maitrisez pas, c'est impossible de progresser.

Naturellement, on compte en décimal pour la seule et unique raison que l'on a dix doigts (eh oui). En effet, dès qu'on a plus de doigt pour compter, on memorise une dizaine et on continue et ainsi de suite. Imaginez qu'on ai 16 doigts (je sais, c'est dur). On conterais nos 16 doigts et on memorise une 'seizaine' et on continue de la même façon. Vous avez compris ça? Eh bien, vous connaissez l'hexadecimal!!

en decimal: 1 2 3 4 5 6 7 8 9 10 11 12 13 14...
en hexa: 1 2 3 4 5 6 7 8 9 A B C D E F 10 11 12 13 14...

en supposant qu'on ait n doigts, on compterais comme ça:
1 2 3 4 ... n-1 10 11 12 13 14 ... 1(n-1) 20 21 22 etc...

marrant non?
 
 

Un nombre en decimal se decompose ainsi:
abcd = a * 1000 + b * 100 + b * 10 + d * 1 = a * 10^3 + b * 10^2+ c * 10 + d

par exemple:
5348 = 5 * 10^3 + 3 * 10^2 + 4 * 10^1 + 8 * 10^0
 

En base N, il se décomposerais de la même façon:
abcd = a * N^3 + b * N^2 + c * N^1 + d * N^0

On note [abcd]N le nombre formé des chiffres abcd en base N
Avec ces résultat, on peux déja convertir de n'importe quelle base en decimal. Exemples:

[12B]16 = 1 * 16^2 + 2 * 16 + 11 = 256 + 32 + 11 = 299
[51]8 = 5 * 8 + 1 = 40 + 1 = 41
[1000101]2 = 2^6 + 0 + 0 + 0 + 2^2 + 0 + 1 = 64 + 4 + 1 = 69
 
 

Maintenant, on veux faire le contraire. Prenons le nombre abcd, que l'on veux convertir en base N
abcd = a * 10^3 + b * 10^2 + c * 10 + d
*Une methode consiste à diviser abcd par N jusqu'à obtension d'un reste inferieur à N, et de lire le nombre en base N comme indiqué sur l'illustration:

Exemple de coverision: 1386 en base 12

On lit à l'envers: 9, 7 puis 6 qui correspondent aux chiffres en base 12










*Une methode plus instinctive consiste à trouver la puissance de N la plus proche du chiffre, de soustraire et de rechercher la puissance la plus proche et ainsi de suite:

Ex: Convertir 142 en base 2
La puissance la plus proche de 142 est 128, il reste 142-128=14
La puissance la plus proche de 14 est 8, il reste 14-8=6
La puissance la plus proche de 6 est 4, il reste 6-4=2
La puissance la plus proche de 2 est 2, il reste 2-2=0

Donc 142 = 128 + 8 + 4 + 2 = 2^7 + 2^3 + 2^2 = [10001100]2
 
 
 

Pour convertir, maintenant, d'une base N1 à une base N2, vous pouvez passer par le décimal, mais il y a une petite astuce si N1 est une puissance de N2 (où vice versa).
Conversion Binaire Hexa (base 2 en base 16): On a N1^4 = N2.
On peux donc ecrire: On converti a, b, c et d en binaire:
a[16]=[a3 a2 a1 a0]2
b[16]=[b3 b2 b1 b0]2
c[16]=[c3 c2 c1 c0]2
d[16]=[d3 d2 d1 d0]2

Alors:
[abcd]16= a * 16^3 + b * 16^2 + c * 16 + d
= a * 2^12 + b * 2^8 + c * 2^4 + d
= a3 * 2^15 + a2 * 2^14 + a1 * 2^13 + a0 * 2^12 + b3 * 2^11 +....+ d2 * 2^2 + d1 * 2 + d0
= [a3 a2 a1 a0 b3 b2 b1 b0 c3 c2 c1 c0 d3 d2 d1 d0]2

Il suffit donc de convertir chacun des chiffres en binaire et de les accoler :)

Ex: [A286]16
[A]16 = [1010]2
[2]16 = [0010]2
[8]16 = [1000]2
[6]16 = [0110]2

donc:
[A286]16 = [1010 0010 1000 0110]2
 

Voila! Vous savez à peu pres ce qu'il y a à savoir sur les bases :) 



©Tous les programmes presents sur ce site sont soumis à l'autorisation de leur programmeurs respectifs pour toutes modifications. La mise en page a necessité un certain travail, il serait donc plus correct de ne pas la plagier.