Les microprocesseurs utilisent que des 0 (dit également état bas) correspondant généralement au 0Volt ou des 1 (état haut) pour le 5V (en général car les nouveaux microprocesseurs pour PC sont en 3,3 Volts), il faut donc utiliser le code binaire (suite de 0 et de 1).
Un bit correspond à un "fil" qui peut donc prendre la valeur 1 ou 0.
Un bus correspond à ensemble de bits (généralement 4 bits, 8bits=1octet, 16bits=2octets, 32 ...).
L'état du bus est définie par un nombre binaire (exemple pour 4 bits: 0110)
Si on appelle A0 le bit de poids le plus faible, A1 le suivant, ...An le plus fort, avec Ai(i=0 à n)=0 ou 1 , la somme des Ai*2^i avec i=0 à n (A0*2^0+A1*2^1+ ....+ Ai*2^i+ ... An*2^n) nous donne la valeur en décimale du mot binaire A(n)A(n-1)...A(i)..A(1)A(0).
n représente le nombre de bits
Codage sur 3 bits: (2^3=8 possibilités)
(ici n=3)
Abréviations:
MSB: (Most Significative Bit) bit de poids le plus fort
LSB: (Low Significative Bit) bit de poids le plus faible
Dec: valeur en décimal
Dec
MSB LSB
0
0 0 0
1
0 0 1
2
0 1 0
3
0 1 1
4
1 0 0
5
1 0 1
6
1 1 0
7
1 1 1
NB: Il existe également l'octale (base 8: 0 à 7)
Sur 16 bits (exemple: 0110 1001 0101), cette écriture devient compliqué. On utilise l'écriture hexadécimale: on code chaque octets avec une valeur de 0 à F (F=15)
exemple:
MSB
LSB
1
1
1
1
0
0
0
1
F
1
On obtient donc la table suivante:
Hex: Valeur hexadécimale
Hex
Dec
MSB LSB
0
0
0000 0000
1
1
0000 0001
2
2
0000 0010
3
3
0000 0011
4
4
0000 0100
5
5
0000 0101
6
6
0000 0110
7
7
0000 0111
8
8
0000 1000
9
9
0000 1001
A
10
0000 1010
B
11
0000 1011
C
12
0000 1100
D
13
0000 1101
E
14
0000 1110
F
15
0000 1111
10
16
0001 0000
...
...
...
F0
240
1111 0000
FF
255
1111 1111
...
...
...
Remarque: Dans la plupart des cas une valeur en hexadécimale est précéder du symbole $ (ex: $AF ou $10), une valeur binaire du symbole % (ex: %10101111ou %00010000).
Et plus rarement, une valeur décimale du symbole ! (ex: !175 , !8)
Pour avoir des nombres négatifs il existe deux méthodes:
* le complément à 2
* les nombres signés
A) Le complément à 2
Pour transposer un nombre entier positif, il faut le complémenter (les 0 deviennent des 1 et les 1 des 0) et ajouter 1.
exemple: -10 (dec)
10 (dec) -> 0000 1010 (bin)
on complémente : 1111 0101
on ajoute 1 : 1111 1010
on peut remarquer que sur 4 bits (les plus faibles) 10 et -10 sont identiques en binaires! Il est donc important de faire attention au nombre de bits sur lesquelles on travaille.
Tableau des nombres en compléments à 2 sur un octet:
127
0111 1111
...
...
2
0000 0010
1
0000 0001
0
0000 0000
-1
1111 1111
-2
1111 1110
...
...
-127
1000 0001
-128
1000 0000
B) Les nombres signés
Le bit de poids le plus fort (MSB) indique le signe du nombre.
Principe: Principe: on additionne un nombre positif avec un nombre négatif que l'on obtient en complémentant puis en ajoutant 1 (complément à 2).
exemple: 10-7
1
0
1
0
10
+
1
0
0
1
-7
1
0
0
1
1
3
On remarque que le résultats est juste si l'on ne prend pas la retenue.
Cette retenue est perdue si l'on considère que notre µP ne fonctionne qu'avec un bus de 4 bits.
Remarque: cette retenue est indiqué dans un "registre-drapeaux" : CARRY (ou BORROW suivant le microprocesseur/ microcontrôleur).