Les nombres binaires
 

1) Le binaire (généralité)
 

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)


Sommaire

2) L'addition (4bits)
 

Principe:
0+0=0
1+0=1
1+1=10 (0 et une retenue)

exemple:
1 0 1 0 10
+ 0 1 1 1 7


1 0 0 0 1 17



Sommaire

3) Les nombres négatifs
 


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.

exemples:
%1010 = -2
%0010 = 2
%10001001 = -9
%00001001 = 9


Remarque: Cette méthode est moins utilisé que le complément à 2.


Sommaire

4) La soustraction
 

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).


Sommaire

5) La multiplication
 

Même principe que la multiplication avec les nombres décimaux avec:
1*1=1
1*0=0

Remarque: une multiplication de 4*4 bits donne un résultats sur 8 bits

exemple:
1 1 1 1 -> 15
* 0 1 0 1 -> 5


1 1 1 1 -> 15
0 0 0 0 . -> 0
1 1 1 1 . . -> 60
+ 0 0 0 0 . . . -> 0


0 1 0 0 1 0 1 1 -> 75


à suivre...


Sommaire

6) La division
 

Même principe que la division décimal avec:
1/1=1
0/1=0
(Attention au cas impossible de la division par zéro)

La méthode la plus simple consiste à réaliser une suite de soustraction tout en comptant le nombre de fois que l'on retranche.
exemple:
1 1 1 1 -> 15
/ 0 1 0 1 -> 5


1 0 1 0 -> 10
-5 0 1 0 1 -> 5
->
+ 0 0 0 0 -> 0


0 0 0 0 0 0 1 1 -> 3


à suivre...


Sommaire