![]() Page réalisée par: Philippe Moreau UPJV |
Après un petit rappel sur l'écriture d'un nombre dans une base quelconque, on passera en revue les différents systèmes utilisés en Informatique, puis on s'intéressera aux méthodes de conversions des nombres entiers(calcul de l'expression, divisions successives, utilisations de table de puissances ou table de correspondance). Enfin on terminera par des additifs concernant le cas des Fractionnaires
Un système de numération est un ensemble composé d'un nombre B (appelé base) et d'un ensemble C = { a , b , c , d , ....} dont les éléments sont appelés des chiffres.
L'écriture d'un nombre X = xnxn-1. . . x2x1x0, x-1x-2. . . x-(p-1)x-p dans ce système s'interprète alors en réalisant le calcul suivant:
X = xnBn + xn-1Bn-1 + . . . + x2
B2 + x1B1 + x0B0 + x-1B-1 + x-2B-2
+ . . . + x-(p-1)B-(p-1) + x-pB-p
définitions: en considérant la partie entière de X, xn est appelé le chiffre de poids fort ( et par extention xnxn-1 sont les chiffres de poids fort) alors que x0 est appelé le chiffre de poids faible ( et par extention x2x1x0sont les chiffres de poids faible).
En informatique, on travaille essentiellement avec trois systèmes de numération (un quatrième système de numération est parfois rencontré).
1 - Tout d'abord, le système le plus fréquemment utilisé (car l'informatique "ce sont" les machines, mais surtout les hommes qui les utilisent) est le système décimal (dit à base 10).
2 - La représentation des informations en machines reposant sur le principe du "tout ou rien", cela nous conduit de façon naturel à évoquer le système binaire (dit à base 2).
3 - Pour résoudre les problèmes dûs à l'affuence d'informations de type "0 ou 1" (grande quantité de chiffres à "saisir" ou à "lire") on a été amené à utiliser le système hexadécimal (dit à base 16).
4 - L'utilisation du système octal (dit à base 8) repose sur la même idée que pour l'hexadécimal (regrouper des informations "0 ou1").
Problème: On considère un nombre entier NB écrit dans une base B et on souhaite trouver l'écriture de ce nombre dans une base B'.
Pour cela il existe quatre méthodes classiques permettant cette opération (appelée conversion). Les deux premières méthodes peuvent être appliquées pour des bases B et B' quelconques, alors que les deux dernières méthodes s'appliquent essentiellement dans des cas particuliers.
1ère Méthode: Le calcul de l'expression représentant le nombre
Principe: Cette première méthode consiste à effectuer le calcul de l'expression qui définit le nombre. Ainsi, si le nombre NB s'écrit NB=abcd dans la base B on effectuera le calcul de l'expression:
a . B3 + b . B2 + c . B1 + d . B0 pour trouver l'écriture de NB dans la base B'.
Remarques:
- tous les calculs (additions, multiplications, exponentiation) sont effectués dans la base B'.
- en conséquence, cette méthode sera surtout utilisée (par l'être humain) lorsque la base B' = 10.
Exemple: on considère le nombre NB = 1 1 1 0 1 0 1 1 écrit dans la base 2 que l'on veut écrire dans la base 10. On effectue alors, dans la base 10, le calcul suivant:
1.27 + 1.26 + 1.25 + 0.24 + 1.23 + 0.22 + 1.21 + 1.20
= 128 + 64 + 32 + 0 + 8 + 0 + 2 + 1
= 235
Notation: On écrira alors:
(1 1 1 0 1 0 1 1)2 = (2 3 5)10
Remarque: A titre d'exemple nous allons écrire les opérations à réaliser si nous avions à convertir le nombre NB = 235 (écrit dans la base 10) dans la base 2. On réaliserait alors le calcul suivant:
1 0 . 1 0 1 0 10 + 1 1 . 1 0 1 0 1 + 1 0 1 . 1 0 1 0 0
= 1 1 0 0 1 0 0 0 + 1 1 1 1 0 + 1 0 1
= 1 1 1 0 1 0 1 1
2ème Méthode: La méthode des divisions successives
Principe: Cette deuxième méthode consiste à effectuer des divisions successives entières du nombre NB = abcd (écrit dans la base B) jusqu'à l'obtention d'un quotient nul. Au cours de ces divisions on note les différents restes et ceux-ci permettront l'écriture du nombre dans la nouvelle base B'. Voici schématiquement les opérations à réaliser:
On pourra alors écrire:
(a b c d)B = (Rn+1 Rn . . . R2 R1)B'
Remarques:
- tous les calculs (divisions donc soustractions, multiplications) sont effectués dans la base B.
- en conséquence, cette méthode sera surtout utilisée (par l'être humain) lorsque la base B = 10.
Exemple: on considère le nombre NB = 2 3 5 écrit dans la base 10 que l'on veut convertir dans la base 2. On effectue alors, dans la base 10, les calculs suivants:
Remarque: toujours à titre d'exemple (dans le but de montrer que cette méthode peut être appliquée pour des bases quelconques) nous aurions pu convertir le nombre NB = 1 1 1 0 1 0 1 1 (écrit dans la base 2) dans la base 10, en réalisant les divisions suivantes (en base 2):
3ème Méthode: (cas particulier) utilisation d'une table des puissances de 2 pour une conversion de la base 10 vers la base 2.
Exemple: on désire convertir le nombre NB = 2 3 5 écrit dans la base 10 dans la base 2. Dans un premier temps on construit la table suivante:
20 = 1 | 25 = 32 | 210 = 1024 |
21 = 2 | 26 = 64 | 211 = 2048 |
22 = 4 | 27 = 128 | 212 = 4096 |
23 = 8 | 28 = 256 | 213 = 8192 |
24 = 16 | 29 = 512 | 214 = 16384 |
a) | b) | c) |
64 (= 26) | 1 1 . . . . . . | 1 0 7 - 6 4 = 4 3 |
32 (= 25) | 1 1 1 . . . . . | 4 3 - 32 = 11 |
8 (= 23) | 1 1 1 . 1 . . . | 11 - 8 = 3 |
2 (= 21) | 1 1 1 . 1 . 1 . | 3 - 2 = 1 |
1 (= 20) | 1 1 1 . 1 . 1 1 | 1 - 1 = 0 |
il reste alors à compléter l'écriture: en ajoutant des 0 dans les emplacements libres pour obtenir le résultat escompté:
1 1 1 0 1 0 1 1
(2 3 5)10 = (1 1 1 0 1 0 1 1)2
4ème Méthode: (cas particulier) une base s'écrit comme une puissance de l'autre B = B'n (ou Bn = B')
Principe: Dans ce cas (B = B'n), à un chiffre de la base B correspond un nombre de n chiffres dans la base B' (il existe une bijection entre les chiffres de B et les nombres de n chiffres écrits dans la base B'). Respectivement (cas où Bn = B'), à un ensemble de n chiffres dans l'écriture du nombre dans la base B', on associera un chiffre de la base B.
Remarques:
- Cette méthode de conversion est l'une des plus simple, puisqu'il s'agit simplement d'appliquer le principe du codage ou du décodage (utilisation d'une table de codes (ou correspondance)).
- Il suffit donc de calculer les tables de correspondances. Voici les deux tables de codages qui peuvent être utilisées dans les cas étudiés.
Table de correspondance Hexadécimal - Binaire |
Table Octal - Binaire | |||||
0 | 0 0 0 0 | 8 | 1 0 0 0 | 0 | 0 0 0 | |
1 | 0 0 0 1 | 9 | 1 0 0 1 | 1 | 0 0 1 | |
2 | 0 0 1 0 | A | 1 0 1 0 | 2 | 0 1 0 | |
3 | 0 0 1 1 | B | 1 0 1 1 | 3 | 0 1 1 | |
4 | 0 1 0 0 | C | 1 1 0 0 | 4 | 1 0 0 | |
5 | 0 1 0 1 | D | 1 1 0 1 | 5 | 1 0 1 | |
6 | 0 1 1 0 | E | 1 1 1 0 | 6 | 1 1 0 | |
7 | 0 1 1 1 | F | 1 1 1 1 | 7 | 1 1 1 |
Exemples:
Ex1: on veut convertir le nombre NB = 3 A 9 B , écrit dans la base 16, dans la base 2 (16 = 24). On remplace alors chacun des chiffres du nombre par le nombre de 4 chiffres correspondant et on obtient:
(3 A 9 B)16 = ( 1 1 1 0 1 0 1 0 0 1 1 0 1 1 ) 2
remarque: dans ce chapitre sur la numération les 0 qui précèdent l'écriture "significative" des nombres ne seront pas mentionnés.
Ex2: on veut convertir le nombre NB = 1 1 0 1 0 1 0 0 1 1 0 1 1 écrit dans la base 2 dans la base 8 (8 = 2 3). On remplace alors chaque blocs de 3 chiffres du nombre par le chiffre correspondant et on obtient (rmq: les blocs de 3 chiffres sont obtenus en découpant le nombre à partir de la droite c'est à dire dans le sens de lecture classique d'un nombre en vue de son interprétation (à partir des unités):
( 1 1 0 1 0 1 0 0 1 1 0 1 1 )2 = (1 5 2 3 3)8
Problème: On considère cette fois des nombres qui ne sont pas entiers. Comme nous avons vu comment traiter la partie entière de ces nombres, on va s'intéresser à "la partie fractionnaire pure" de ces nombres c'est à dire considérer des nombres NB qui s'écrivent sous la forme:
NB = 0 , a b c d... (où a, b, c, d sont des chiffres).
Revenons sur les quatre méthodes que nous venons d'étudier.
Additif à la 2ème Méthode: Les multiplications successives
Principe: Comme dans le cas des divisions successives, le but est de retrouver les chiffres qui permettrons d'écrire le nombre dans la base B'. Pour cela on multiplie la partie fractionnaire pure par la base B. La partie entière de ce calcul correspond à un chiffre (dans la base B'). Puis on continue à multiplier la partie fractionnaire pure de ce nouveau résultat jusqu'à obtenir une partie fractionnaire nulle (et alors la conversion est terminée) ou en fonction de la précision souhaitée.
Exemple: Pour convertir le nombre 0,5625 (écrit dans la base 10) dans la base 2
Remarque:
- Avec cette méthode de conversion, on peut cette fois trouver une écriture du nombre dans la base B'. En effet, au cours des multiplications successives, dans le cas de nombre ne menant pas à un résultat nul, on finit par retrouver un résultat déjà obtenu. On pourra alors affirmer que les calculs générés entre les deux résultats vont se répéter, on donc que la séquence de chiffres générée va elle aussi se répéter indéfiniment pour écrire le nombre. On pourra donc indiquer que la séquence obtenue se réécrit un nombre infini de fois en utilisant la notation: (séquence)∞.
Remarque:
Les principes (algorithmes), appris dans les classes primaires, concernant les opérations: d'addition, de soustraction, de multiplication, de division, etc... s'appliquent (bien évidemment) sur les nombres écrits dans une base quelconque.