IFT-17583

Structure interne des ordinateurs

Conversions

 

Conversion décimal-binaire

 

La conversion décimal-binaire présentée à la p. 44 du livre convient bien à un humain, mais pas à un ordinateur qui pense en binaire.

Méthode digit + 10 x R

L'ordinateur évalue la série de la p. 28 en utilisant la factorisation de Horner :

((((0.B + mn-1).B + mn-2).B + mn-3).B + mn-4).B + ...).B + m1).B)+ m0.

Par exemple, pour n = 5 :

((((0.B + m4).B + m3).B + m2).B + m1).B + m0 = m4B4 + m3B3 + m2B2 + m1B1 + m0

On initialise donc le résultat R = 0. On prend le premier digit, on remplace R par R + B.R, on prend le digit suivant, on remplace R par R + B.R, et ainsi de suite tant qu'il y a des digits.

Pour convertir de décimal à binaire, il suffit d'effectuer les opérations en binaire.

Exemple : 32810

= ((0 + 3).10 + 2).10 + 8 = (30 + 2).10 + 8 = 320 + 8 = 328

= ((0 + 00112).10102 + 00102).10102 + 10002 = (111102 + 00102).10102 + 10002

= 1010000002 + 10002 = 1010010002

Illustration graphique :
 

 

Conversion rapide de grands nombres décimaux en binaire

Nous utilisons l'algorithme de la division par la base destination en arithmétique de base 10, sauf que nous choisissons la base 65536 (216).

Exemple : convertir 536 000 000 00010 en binaire.

536 000 000 000 / 65 536 = 8 178 710, reste 61 440.

8 178 710 / 65 536 = 124, reste 52 246

124 / 6 5536 = 0, reste 124

Ces trois restes représentent le résultat en base 65536. On les place dans trois cases de 16 bits. On peut utiliser la calculette pour convertir chacun de ces nombres en binaire et c'est terminé.

On encore on continue comme suit :

On utilise la même technique pour convertir chacun de ces nombres de 16 bits en deux nombres de 8 bits en base 256 (65536 = 2562 et 256 = 28):

124 / 256 = 0, reste 124.

52 246 / 256 = 204, reste 22 et 204 / 256 = 0, reste 204

61 440 / 256 = 240, reste 0

On utilise la même technique pouv convertir chacun de ces nombres de 8 bits en deux nombres de 4 bits en base 16 (256 = 162 et 16 = 24):

Par exemple, 124 / 16 = 7, reste 12 et 7 / 16 = 0, reste 7

201 / 16 = 12, reste 12 et 12 / 16 = 0, reste 12, etc.

La représentation de 536 000 000 000 en binaire est donnée par la dernière rangée.


Conversion binaire-décimal

Si l'ordinateur cible a une instruction de division par 10, cette méthode s'avère très simple à implanter. C'est le même algorithme qu'aux pages 44 et 45 du livre, sauf qu'on divise par 10 et que les opérations s'effectuent en binaire.

Pour convertir 1010010002 en décimal, on procède comme suit :

1010010002 / 10102 = 1000002 reste 10002

1000002 / 10102 = 00112 reste 00102

00112/10102 = 0, reste 00112.

La séquence inversée des restes nous donne les digits décimaux en BCD : 00112, 00102, 10002 qu'on peut facilement traduire en décimal 32810.

 

Dernière mise à jour : 2000-09-28