Systèmes de numération
Quand on lit le nombre décimal 1024 par exemple, cela signifie
1 millier soit 1x10exp3
0 centaine soit 0x10exp2
2 dizaines soit 2x10exp1
4 unités soit 4x10exp0
la base est 10
et on a bien 1x10exp3+ soit 0x10exp2+ soit 2x10exp1+ soit 4x10exp0=1024
Avec MPASM on l'écrit d'1024'
La base est 2
Quand on lit le nombre binaire 1101 par exemple, cela signifie
1x2exp3 soit 1x8
1x2exp2 soit 1x4
0x2exp1 soit 0x2
1x2exp0 soit 1x1
la valeur en décimal de ce nombre binaire est donc 1x8+1x4+0x2+1x1=13
Avec MPASM on l'écrit b'1101'
La base est 16, il a fallu créer 6 chiffres nouveaux: A, B, C, D, E et F
Décimal | hexadécimal | Binaire |
0 | 0 | 0000 |
1 | 1 | 0001 |
2 | 2 | 0010 |
3 | 3 | 0011 |
4 | 4 | 0100 |
5 | 5 | 0101 |
6 | 6 | 0110 |
7 | 7 | 0111 |
8 | 8 | 1000 |
9 | 9 | 1001 |
10 | A | 1010 |
11 | B | 1011 |
12 | C | 1100 |
13 | D | 1101 |
14 | E | 1110 |
15 | F | 1111 |
Quand on lit le nombre hexadécimal 1F0A par exemple, cela signifie
1x16exp3 soit 1x4096
Fx16exp2 soit 15x256
0x16exp1 soit 0x16
Ax16exp0 soit 10x1
la valeur en décimal de ce nombre binaire est donc 1x4096+15x256+0x16+10x1=7946
Avec MPASM on l'écrit h'1f0a' ou h'1F0A'
la valeur binaire est plus simple à trouver, il suffit de juxtaposer les chiffres exprimés en binaire:
0001 1111 0000 1010 soit 1111100001010 puisque comme en décimal, les zéros à gauche ne sont pas significatifs
Un nombre binaire de 8 chiffres correspond parfaitement à l'état des huit bits d'un registre, ou d'une mémoire moyennant la convention suivante:
Un nombre binaire long est difficile à lire, on préfère l'écrire sous forme hexadécimale ce qui est d'autant plus facile à faire qu'il suffit de juxtaposer les représentations:
par exemple:
3F correspond à 00111111 (0011 collé à 1111)
72 correspond à 01110010 (0111 collé à 0010)
Si l'on se limite aux nombres positifs, un nombre binaire de 8 chiffres peut aller de
0000 0000 à 1111 1111 soit 00 à FF en hexadécimal et 0 à 255 en décimal
Si l'on veut aussi des nombres négatif, tout en restant sur huit bits, on adopte une autre notation mais qui limite à la plage -128 +127:
Le bit 7 de poids le plus fort sert pour le signe:
Mais ce n'est pas tout:
Pour passer d'un nombre positif à un nombre négatif, et réciproquement, la procédure est la suivante:
On inverse tous les bits du nombre: les 0 deviennent des 1, les 1 deviennent des 0, et on ajoute 1 au résultat (en faisant jouer les retenues, voir plus bas)
Exemple: 0000 0110 correspond à +6
On inverse: 1111 1001
On ajoute 1
Résultat 1111 1110 qui correspond à -6
Addition:
Il faut savoir que
L'addition se fait donc comme en décimal, avec les retenues:
Soustraction:
Cela ne marche qu'en nombres signés, on ramène la soustraction à l'addition d'un nombre négatif
Ces fonctions s'appliquent bit à bit, quand elles portent sur deux nombres de 8 chiffres par exemple, la fonction agit indépendamment sur les bits 7 des deux nombres, sur les bits 6, etc
Fonction PAS (NOT):
Elle transforme les 0 en 1 et les 1 en 0
PAS(0110)=1001
Fonction ET (AND):
Le résultat est à 1 si le bit A ET le bit B sont à 1
On en tire le tableau de vérité:
A | B | A ET B |
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
On écrit A AND B
Fonction OU (OR):
Le résultat est à 1 si le bit A OU le bit B est à 1
On en tire le tableau de vérité:
A | B | A OU B |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
On écrit A OR B
Fonction OU exclusif (XOR):
Le résultat est à 1 si le bit A OU le bit B est à 1, mais pas les deux
On en tire le tableau de vérité:
A | B | A XOR B |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
On écrit A XOR B
Quelques formules:
PAS(A OU B)=(PAS A) ET (PAS B)
PAS(A ET B)=(PAS A) OU (PAS B)
A XOR B= A ET (PAS B) OU (PAS A) ET B
Retour au sommaire
© 1999-2009 A. Ducros F5AD