1.
Codage de l’information
2.
Numération
PanneauBinConv.dif\BinConv.exe
1.1 Codage en général
: le pourquoi
1.2 Codage des caractères
: code ASCII
Un alphabet de lettres majuscules
={A,B,C,...,Z}
soient 26 caractères
Des chiffres {0,1,...,9}
soient 10 caractères
Des symboles syntaxiques {? ,
; ( " ...
au minimum 10 caractères
TOTAL minimal = 72 caractères
1.3 Codage des nombres entiers : numération
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:
Rappel de numération
:
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 :
Soit un nombre x écrit en base b avec n+1 symboles.
Le bit de rang 0 est appelé
le bit de poids faible.
Le bit de rang n est appelé
le bit de poids fort.
1.4 Les entiers dans une mémoire à n+1 bits : 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é :
1.5 Codage des nombres entiers : 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].
1.6 Un autre codage des nombres entiers : 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).
2.
Numération
Nous avons parlé d’addition en binaire ; comme dans le système décimal, il nous faut connaître les tables d’addition, de multiplication, etc... afin d’effectuer des calculs dans cette base. Heureusement en binaire, elles sont très simples :
addition
+ | 0 | 1 |
0 | 0 | 1 |
1 | 1 | 0(1) |
multiplication
* | 0 | 1 |
0 | 0 | 0 |
1 | 0 | 1 |
Exemples de calculs :
1101101 + 10011 _____________ 10000000 |
10110
x 101 ____________ 10110 10110.. ___________ 1101110 |
Vous noterez que le procédé est identique à celui que vous connaissez en décimal. En hexadécimal (b=16) il en est de même. Dans ce cas les tables d’opérateurs sont très longues à apprendre.
Etant donné que
le système classique utilisé par chacun de nous est le système
décimal, nous nous proposons de fournir d’une manière pratique
les conversions usuelles permettant de passer de la représentation
d’un nombre entre les systèmes décimal, binaire et hexadécimal.
2.2 Conversions base quelconque <=> décimal
Voici ci-dessous un rappel
des méthodes générales permettant de convertir un
nombre en base b (b>1)en sa représentation décimale et réciproquement.
Pour le convertir en décimal (base 10), il faut :
B ) Soit
" a " un nombre décimal à représenter en base
b :
Les pi équivalents
en base 13 sont:
r0 = 8 ® p0 = 8 |
r1 = 11 ® p1 = B |
r2 = 10 ® p2 = A |
r3 = 2 ® p3 = 2 |
Dans les deux paragraphes
suivants nous allons expliciter des exemples de ces méthodes dans
le cas où la base est 2 (binaire).
2.3 Exemple de conversion décimal® binaire
Soit le nombre décimal 35
Donc : 35 (décimal) º 100011(binaire)
2.4 Exemple de conversion binaire®décimal
Soit le nombre binaire : 1101101
sa conversion en décimal est immédiate :1101101 º 26 +25 +23 +23 +22 +1 =64+32+8+4+1 =109 (décimal)
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 à opérer 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 ici.
2.5 Conversion binaire®hexadécimal
Nous allons détailler l’action de conversion en 6 étapes :
2.6 Conversion hexadécimal®binaire
Cette conversion est l’opération inverse de la précédente. Nous allons la détailler en 4 étapes :