1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
|
; Voici un algorithme de conversion d'une base vers une base plus
; petite (par exemple de 65536 vers 10000).
;
; Expliquons l'algorithme en faisant une conversion de la base 10 vers
; la base 3 (d = 3). Convertissons le nombre 837.
;
; 0 0 0 0 0 0 8. 3 7 | +
; 0 0 0 0 0 2 2 3. 7 | +
; 0 0 0 0 0 2 7 2 7.| +
; 0 0 0 0 0 2 7 9 0 | . -
; 0 0 0 0 0 2. 7 9 |0 +
; 0 0 0 0 0 2 7. 9 |0 +
; 0 0 0 0 0 9 0 9.|0 +
; 0 0 0 0 0 9 3 0 |0. -
; 0 0 0 0 0 9. 3 |0 0 +
; 0 0 0 0 3 0 3.|0 0 +
; 0 0 0 0 3 1 0 |0. 0 -
; 0 0 0 0 3. 1 |0 0 0 +
; 0 0 0 1 0 1.|0 0 0 +
; 0 0 0 1 0 1 |0. 0 0 -
; 0 0 0 1. 0 |1 0 0 0 +
; 0 0 0 1 0.|1 0 0 0 +
; 0 0 0 3 1 |1. 0 0 0 -
; 0 0 0 3.|1 1 0 0 0 +
; 0 0 1 0 |1. 1 0 0 0 -
; 0 0 1.|0 1 1 0 0 0 +
; 0 0 1 |0. 1 1 0 0 0 -
; 0 0 |1. 0 1 1 0 0 0 -
;
; Le résultat est 1011000 (c'est un pur hasard, s'il ne contient pas de 2).
;
; Explications: chaque opération porte sur un groupe de deux chiffres. Ces
; deux chiffres sont suivis par le point dans la simulation ci-dessus. Par
; ailleurs, tout ce qui est a droite de la barre verticale est définitif.
;
; Il y a un nombre suffisant de 0 a gauche du nombre.
;
; On commence avec la barre verticale a droite du dernier chiffre
; et le point a droite du chiffre le plus signifiant (première ligne).
:
; Si la barre est a droite du point (ligne marquées d'un +):
; - on remplace les deux chiffres a gauche du point par le quotient et
; le reste dans la division par d.
; - on déplace le point d'un position vers la droite.
;
; Si la barre est a gauche du point (lignes marquées d'un -):
; - on déplace la barre d'une position vers la gauche,
; - on replace le point a la droite du chiffre le plus signifiant.
;
; On a fini quand on est amené a faire deux fois de suite l'opération -, ou
; ce qui revient au meme, quand on n'a plus que des 0 a gauche de la barre.
;
; Remarque: dans les opérations de division de 2 chiffres par d, le chiffre
; de gauche est toujours strictement plus petit que d, car il est soit 0,
; soit le reste de l'opération précédente. Il en résulte que le quotient se
; compose toujours d'un seul chiffre. Or cette caractéristique correspond
; exactement (ce n'est pas par hasard) au mode de fonctionnement du 8086, qui
; refuse de diviser 32 bits par 16 bits si le quotient doit etre de plus de 16
; bits. |
Partager