Les nombres entiers peuvent être codés comme des caractères
ordinaires. Toutefois les codages adoptés pour les données
autres que numériques sont trop lourds à manipuler dans un
ordinateur. Du fait de sa constitution, un ordinateur est plus " habile
" à manipuler des nombres écrits en numération binaire
(qui est un codage particulier). Nous allons décrire trois modes
de codage des entiers les plus connus.
Nous avons l’habitude d’écrire nos nombres et de calculer dans le système décimal. Il s’agit en fait d’un cas particulier de numération en base 10.
Il est possible de représenter tous les nombres dans un système à base b (b entier, b>1). Nous ne présenterons pas ici un cours d’arithmétique, mais seulementles éléments nécessaires à l’écriture dans les deux systèmes les plus utilisés en informatique : le binaire (b=2) et l’hexadécimal(b=16).
Lorsque nous écrivons 5876 en base 10, la position des chiffres 5,8,7,6 indique la puissance de 10 à laquelle ils sont associés :
Il en est de même dans une base b quelconque (b=2, ou b=16).
Nous conviendrons de mentionner la valeur de la base au dessus du nombre
afin de savoir quel est son type de représentation.
Soit
un nombre x écrit en base b avec n+1 symboles.
Lorsque b=2 (numération binaire)
" xk " Î {0,1},
les nombres binaires sont donc écrits avec des 0 et des 1, qui sont
représentés physiquement par des bits dans la machine.
Voici
le schéma d’une mémoire à n+1 bits (au minimum
8 bits dans un micro-ordinateur) :
Le bit de rang 0 est appelé le bit de poids faible.
Le bit de rang n est appelé le bit de poids fort.
le binaire pur |
Ce codage est celui dans lequel les nombres entiers naturels sont écrits en numération binaire (en base b=2).
Le nombre " dix " s’écrit 10 en base b=10, il s’écrit
1010 en base b=2.
Dans la mémoire il est codé :
le binaire signé |
Ce codage permet la représentation des nombres entiers relatifs.
Dans la représentation en binaire signé, le bit de poids
fort sert à représenter le signe (0 pour un entier positif
et 1 pour un entier négatif), les
n autres bits représentent
la valeur absolue du nombre en binaire pur.
Pour une mémoire à n+1 bits (n>1), tous les entiers naturels
de l'intervalle [-(2n - 1),(2n -1)]seront représentés.
Il reste malgré tout une configuration mémoire inutilisée
: 1000...00000. Cet état
binaire ne représente à priori aucun nombre entier ni positif
ni négatif de l’intervalle [-(2n - 1),(2n -1)].
Afin de ne pas perdre inutilement la configuration
"
1000...00000
", les informaticiens ont décidé que cette configuration
représente malgré tout un nombre négatif parce que
le bit de signe est 1, et en même temps la puissance du bit contenant
le "1", donc -2n.
L’intervalle de représentation se trouve alors augmenté
d’un nombre :
il devient :[-2n ,2n -1].
C’est une version améliorée de ce codage qui est utilisée
dans la plupart des calculateurs : elle se nomme le complément à
deux.
le complément à deux |
Ce codage, purement conventionnel et très utilisé de nos jours, est dérivé du binaire signé ; il sert à représenter en mémoire les entiers relatifs.
Supposons que la mémoire soit à n+1 bits,
soit x un entier relatif à représenter.
- si x > 0, alors c'est la convention en binaire signé
qui s'applique (le bit de signe vaut 0, les n bits restants codent le nombre),
soit pour le nombre +14 :
- si x < 0, alors
Un des intérêts majeurs de ce codage est d’intégrer la soustraction dans l’opération de codage et de ne faire effectuer que des opérations simples et rapides (non logique, addition de 1).