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.
|