Code : Tout sélectionner
Tutorial 2 - Les bases décimale, binaire et hexadécimale
--------------------------------------------------------
- Terminé le 17 octobre 2004 -
-------------------------------
On ne peut pas aborder l'assembleur sans avoir compris un minimum la représentation des nombres décimaux en binaire et hexadécimale.
|------------------------------|
| La base décimale ou base 10: |
|------------------------------|
C'est la base que nous utilisons tous les jours. Elle comporte 10 chiffres :
0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Tout nombre quelle que soit sa base peut se représenter sous la forme d'une expression de puissance de sa base.
En rappel, Tout nombre élevé à la puissance 0 est égal à 1
J'utilise le symbole ^ pour indiquer qu'il s'agit d'une puissance.
2^0 = 1
10^0 = 1
etc.
et voici un rappel de quelques puissances de 10
-----------------------------------------------
10^0 = 1
10^1 = 10
10^2 = 10 x 10 = 100
10^3 = 10 x 10 x 10 = 1000
10^4 = 10 x 10 x 10 x 10 = 10000
10^5 = 10 x 10 x 10 x 10 x 10 = 100000
Si l'exposant vaut 5, on retrouve 5 fois le 10 dans l'expression (10^5 = 10 x 10 x 10 x 10 x 10) et cinq 0 sui suivent le 1 (100000)
On peut décomposer un nombre en base 10 comme ceci
L'unité multiplira 10^0, la dizaine multipliera 10^1, la centaine multipliera 10^2 etc.
Cette façon de faire est valable pour la base 2 et 16 sauf pour la puissance qui sera respectivement une puissance de 2 et de 16.
par exemple le nombre 459 :
centaine | dizaine | unité
4 | 5 | 9
(4x10^2) + (5x10^1) + (9x10^0)
(4 x 100) + (5 x 10) + (9 x 1)
400 + 50 + 9
459
|----------------------------|
| La base binaire ou base 2: |
|----------------------------|
C'est en électricité et précisément en électronique (logique ou numérique) la base qui représente le mieux l'état électrique.
Un nombre binaire (= en base deux) est un nombre dont chaque chiffre ne peut valoir que 0 ou 1 (par conséquent elle ne comporte que 2 chiffres)
0, 1
qui peuvent indiquer que le courant passe ou ne passe pas (2 états : en électronique analogique, les variations des signaux ne sont pas représentées de la même manière).
En rappel, Tout nombre élevé à la puissance 0 est égal à 1 donc
2^0 = 1
et voici un rappel de quelques puissances de 2
----------------------------------------------
2^0 = 1
2^1 = 2
2^2 = 4 = 2 x 2
2^3 = 8 = 2 x 2 x 2
2^4 = 16 = 2 x 2 x 2 x 2
2^5 = 32 = 2 x 2 x 2 x 2 x 2
Si l'exposant vaut 5, on retrouve 5 fois le 2 dans l'expression (2^5 = 2 x 2 x 2 x 2 x 2)
Le nombre décimal 459 sera représenté en binaire par
1 1100 1011
Chaque 0 ou chaque 1 qui constituent le nombre binaire est appelé bit (et non pas byte)
Le chiffre le plus à droite a le rang 0 (2^0), celui après en allant vers la gauche le rang 1 (2^1) etc. en suivant
Chaque bit à 1 multipliera la puissance par 1 et chaque bit à 0 par 0, ensuite on additionne.
Pour 459 en décimal , on a la décomposition en base 2 suivante :
459 = 1 1100 1011
1 x 2^8 | 1 x 2^7 | 1 x 2^6 | 0 x 2^5 | 0 x 2^4 | 1 x 2^3 | 0 x 2^2 | 1 x 2^1 | 1 x 2^0
(1 x 256) + (1 x 128) + (1 x 64) + (0 x 32) + (0 x 16) + (1 x 8) + (0 x 4) + (1 x 2) + (1 x 1)
256 + 128 + 64 + 0 + 0 + 8 + 0 + 2 + 1
A noter que 1 1100 1011 = 0001 1100 1011
Les 0 à gauches sont des 0 non significatifs mais permettent parfois une meilleure lecture.
Voici un nombre de 32 bit en binaire (=long en PureBasic et = Dword en assembleur)
10001110010110100001110011111010
b31 b0
Le bit le plus à droite est le bit b0 et le bit le plus à gauche (le 32 ième) est le bit b31
b0 est appelé LSB en anglais pour Least significant bit soit bit le moins significatif
b0 est également appelé bit de poids faible
b31 est appelé MSB en anglais pour Most significant bit soit bit le plus significatif
b31 est également appelé bit de poids fort
Si le nombre est un word (16 bits) c'est b15 qui est le bit de poids fort et etc en fonction de la taille des nombres.
|----------------------------------|
| La base hexadécimale ou base 16: |
|----------------------------------|
La représentation en binaire est lourde car les nombres deviennent vite très longs.
La base 10 ne permet pas une bonne représentation (10 n'est pas une puissance de 2).
La solution de représentation est la base 16 car elle comporte 16 éléments (10 pour la base décimale et 2 pour le binaire).
16 est une puissance de 2 ce qui est un avantage.
Les 16 éléments (ou "chiffres") qui la composent sont les suivants :
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
A vaut 10 en décimal, B = 11 etc. jusqu'à F = 15
La décomposition en base 16 est identique à celle de la base 2 ou 10 sauf que c'est 16 qui est élevé à la puissance.
16^0, 16^1 etc.
et voici un rappel de quelques puissances de 16
----------------------------------------------
16^0 = 1 = 2^0
16^1 = 16 = 2^4
16^2 = 16 x 16 = 256 = 2^8
16^3 = 16 x 16 x 16 = 4096 = 2^12
16^4 = 16 x 16 x 16 x 16 = 65536 = 2^16
On va reprendre le nombre 459
Voici sa représentation en hexadécimale :
1CB
Pour 459 en base 16 on a la décomposition suivante pour arriver en décimal
1 | C | B
1 x 16^2 | C x 16^1 | B x 16^0
(1 x 256) | 12 x 16 | 11 x 1
256 + 192 + 11
La représentation en binaire de chacun des 10 éléments de la base 16 tient sur 4 bits
Voici la représentation des 10 éléments hexa en binaire
0 --> 0000
1 --> 0001
2 --> 0010
3 --> 0011
4 --> 0100
5 --> 0101
6 --> 0110
7 --> 0111
8 --> 1000
9 --> 1001
A --> 1010
B --> 1011
C --> 1100
D --> 1101
E --> 1110
F --> 1111
On peut donc facilement découper un nombre hexa en sa représentation binaire (base 16 multiple de la base 2).
Toujours avec 459 (décimal) --> 1CB en hexa
1 | C | B
0001 | 1100 | 1011
ce qui donne 459 (décimal) --> 000111001011
4 bits sont appelés un quartet
8 bits sont appelés un octet (ou byte en anglais)
pour un quartet on a 2^4 possibilités (16 en tout)
pour un octet on a 2^8 possibilités (256 en tout)
Pour info, lorsque l'on ajoute à 9 (hexa) le nombre 1 (hexa), le résultat est A et non 10.
Si on ajoute 1 au nombre F, le résultat est 10. La retenue ne s'ajoute pas au passage par 10 mais par 16.
La doc Purebasic dispose d'une table de conversion des 3 bases.
Voir dans Manuel, rubrique Thèmes divers, Table numérique
Voilà pour le deuxième tut.
Prochain tut : Changement de base (rapidement car il existe les calculatrices) et la représentation des nombres entiers signés et non signés.
A+
Denis