I.2.2. Les systèmes de numération
Les systèmes de numération sont importants parce
qu'ils permettent de préciser le domaine de définition dans
lequel on travaille et de convertir une base donnée en une base dont le
calcul est aisé à réaliser.
A. Addition binaire
Le tableau ci-dessous présente le bit somme et le bit
de retenue dans l'addition binaire.
Dans le tableau ci-haut, 0(1) représente la retenue 1
à reporter. En considérant une addition binaire comme la somme
à effectuer sur deux mémoires à un bit, nous observons
dans l'addition binaire les différentes configurations des bits
concernés (notés a et b).
~ 21 ~
Nous aurons comme résultat un bit de somme et un bit de
retenue.
Bit a
|
|
Bit b
|
|
Bit somme
|
Bit de retenue
|
1
|
+
|
1
|
=
|
0
|
1
|
1
|
+
|
0
|
=
|
1
|
0
|
0
|
+
|
1
|
=
|
1
|
0
|
0
|
+
|
0
|
=
|
0
|
0
|
Si l'on compare avec les tables d'opérateurs
booléens rencontrées précédemment, on
s'aperçoit que l'opérateur ? (Xor) fournit en sortie les
mêmes configurations que le bit somme, et que l'opérateur
. (ET) délivre en sortie les mêmes configurations que le
bit de retenue.
B. Conversion d'une base quelconque en base
décimale
Pour convertir un nombre en base b avec b>1 en sa
représentation décimale et réciproquement, il convient de
respecter les méthodes générales suivantes :
Soit (xnxn-1...x0) b un nombre
écrit en base b. Pour le convertir en décimal (base 10), il faut
:
Convertir chaque symbole xk en son équivalent
ak en base 10. On obtient ainsi la suite de chiffres : an
a .
,...,
0
Réécrire le nombre comme une somme :
n n
k k
(xnxn-1...x0)b Î ? ? ?
x b a b
k k
k = 0 k = 0
Effectuer tous les calculs en base 10 (somme, produit,
puissance).
Comme illustration, nous nous proposons de convertir
(2AB8)13 en base 10.
Dans notre exemple, b = 13. Nous aurons donc l'expression
suivante :
(2AB8)13 = 2.133 + 10.132
+ 11.131 + 8.130 [avec A=10 et B =11]
= 4394 + 1690 + 143 + 8
= (6235)10
Le nombre (2AB8)13 donne (6235)10
en base 10.
Soit « a » un nombre écrit en décimal.
Représenter le nombre a en base b :
La méthode utilisée est un algorithme fondé
sur la division euclidienne.
~ 22 ~
Si a < b, il n'a pas besoin d'être converti.
Si a = b, on peut diviser a par b et l'on divise successivement
les différents quotients qk obtenues par la base b.
De manière générale, on aura :
k k - 1
a = b r b r
. + . + .... + . + ( Où ri est le reste de la
division de a par b). b r r
k k - 1 1 0
En remplaçant chaque ri par son symbole
équivalent p i en base b, nous
obtenons :
|
a p p - p p
= ( ... ) b. Cet algorithme permet d'obtenir
une
k k 1 1 0
|
représentation de a dans la base b.
On a par exemple que (89)10 = (1011001)2. En effet, pour
transformer (89)10 en binaire, on peut utiliser la méthode des divisions
successives par 2 : on divise successivement par 2 jusqu'à un
résultat de 0, les restes successifs (de bas en haut) forment le nombre
binaire.
89 : 2 = 44 reste 1
44 : 2 = 22 reste 0
22 : 2 = 11 reste 0
11 : 2 = 5 reste 1
5 : 2 = 2 reste 1
2 : 2 = 1 reste 0
1 : 2 = 0 reste 1
D'où (89)10 = (1011001)2
A l'inverse, (1011001)2 représente (89)10. En effet, on
aura :
1x26 + 0x25 + 1x24 + 1x23
+ 0x22 + 0x21 + 1x20
= 1x64 + 0x32 + 1x16 + 1x8 + 0x4 + 0x2 + 1x1
= 64 + 16 + 8 + 1
= (89)10.
Les informaticiens, pour des raisons de commodité
(manipulations minimales de symboles), préfèrent utiliser
l'hexadécimal plutôt que le binaire. L'humain, contrairement
à la machine, a quelques difficultés à fonctionner sur des
suites importantes de 1 et de 0. Ainsi l'hexadécimal (sa base b =24
étant une puissance de 2) permet de diviser, en moyenne le nombre
de symboles par un peu moins de 4, par rapport au même nombre
écrit en binaire. C'est l'unique raison pratique qui justifie son
utilisation.
~ 23 ~
|