Auteur : Franck CHAMBON, Lycée Lucie Aubrac
Merci à Florent P. pour ses prises de notes de cours, reprises ici.
L'informatique fonctionne avec deux états fondamentaux :
Nb états | Nom |
---|---|
2 | Binaire |
3 | Ternaire |
8 | Octal |
10 | Décimal |
16 | Hexadécimal |
L'unité élémentaire de stockage est le bit. (Binary digit)
Un disque dur, un CD-ROM, la mémoire vive, sont constitués de cases remplies soit de 0, soit de 1.
Propriété : avec un paquet de cases binaires, on peut coder symboles différents.
Exemple 1 : avec 3 cases binaires, on peut coder symboles différents
000
pour 0001
pour 1010
pour 2011
pour 3100
pour 4101
pour 5110
pour 6111
pour 7Exemple 2 : avec 8 cases binaires on peut coder symboles différents.
Pour un lot de 8 bits, on parle d'octet (byte).
Remarques
En pratique les données informatiques transitent très souvent par paquets de 8 bits, donc par octets. La première raison à cela a été l'utilisation de l'ASCII pour transporter l'information du texte écrit.
Le codage ASCII utilise un octet :
Il est utilisé pour coder :
Les articles sont écrits là en italiques, car c'est impossible en réalité de les mettre tous.
Pour un texte en anglais, avec une ponctuation classique, l'ASCII est parfaitement adapté.
Pour chaque pays, à une époque, on utilisait une variante de l'ASCII étendu (un pour chaque pays/langue), avec 128 symboles supplémentaires (ceux avec le bit de poids fort égal à 1). Le problème était pour la communication entre utilisateurs de différents pays ; c'était parfois compliqué... En France on utilisait l'encodage latin-1
nommé aussi ISO 8859-1
.
Aujourd'hui on utilise souvent un codage UTF-8 avec un nombre variable d'octets pour pouvoir échanger du texte dans n’importe quelle langue, avec smiley...
0
, alors le caractère est codé en ASCII ; le cas le plus fréquent.Conclusion, le poids d'un fichier texte est donné par la règle :
Une autre utilisation de l'octet est de proposer 256 symboles différents, comme 256 nombres différents. Un octet peut représenter un niveau de gris parmi 256.
Une image simple (en 256 niveaux de gris) est une liste de lignes, où chaque ligne est une liste de pixels codés sur un octet. Dans ce cas une image de 600 pixels de large, par 400 pixels de haut pèse (hors compression).
Pour coder d'autres nombres, pour des images plus précises, ou pour d'autres usages, on pourra utiliser plus que 8 bits.
On a nombres de à .
binaire | hexadécimal | |
---|---|---|
0 | 0000 |
0 |
1 | 0001 |
1 |
2 | 0010 |
2 |
3 | 0011 |
3 |
4 | 0100 |
4 |
5 | 0101 |
5 |
6 | 0110 |
6 |
7 | 0111 |
7 |
8 | 1000 |
8 |
9 | 1001 |
9 |
10 | 1010 |
A |
11 | 1011 |
B |
12 | 1100 |
C |
13 | 1101 |
D |
14 | 1110 |
E |
15 | 1111 |
F |
Ce tableau est à connaître et à savoir refaire !
Il y a nombres de à .
Par exemple :
On apprendra à faire les conversions binaire vers décimal.
Il y a nombres de jusqu'à .
On retiendra que sur 4 octets, on peut différencier plus de 4 milliards de nombres.
Exemple : avec
Le résultat est .
On préférera compléter à gauche avec deux zéros pour faire des paquets de quatre bits.
Exemple : avec
On va faire une boucle sur les chiffres lus, soit on a 1
, soit 0
, soit on sort dans le vide...
1
,
0
,1
.0
en 1
.Chaque chiffre binaire correspond à une puissance de deux.
1
: la puissance est présente, elle compte fois.0
: la puissance est absente, elle compte fois.On lit les chiffres de la droite vers la gauche, cela donne les puissances de : , puis , puis , etc.
Exemple :
Exemple avec
retenues : 1 1 1
-----------
1 0 1
+ 1 1 1
-------
1 1 0 0
Et si on essayait de poser aussi les multiplications en binaire ?
Exemple avec
retenues : 1 1 1 1 0 0 0
-----------
1 1 0 1
× 1 0 1 1
---------
1 1 0 1
1 1 0 1 .
0 . .
1 1 0 1 . . .
=============
1 0 0 0 1 1 1 1
On a possibilités.
Pour les entiers signés on partage l'intervalle en deux, zéro étant à la fois positif et négatif, il reste une place, on choisit d'avoir un négatif de plus.
On a milliards de possibilités.
Il y a deux problèmes :
Cette méthode résout les deux problèmes précédents :
On voudrait
Sur un conteneur 8-bit, on prépare l'addition à trou, et on déduit que se code avec 1111 1111
.
0 0 0 0 0 0 0 1
+ 1 1 1 1 1 1 1 1
------------------
1 0 0 0 0 0 0 0 0
On remarque qu'il reste un bit de poids fort, mais il n'est plus dans le conteneur 8-bit ; il est perdu, et on obtient bien 0 !
On voudrait aussi
0 0 0 0 0 1 1 0
+ 1 1 1 1 1 0 1 0
------------------
1 0 0 0 0 0 0 0 0
Comment obtenir plus rapidement l'opposé d'un entier ?
Exemple avec
1111 1001
1111 1010
- L'inversion donne
1001 0110
.- L'ajout de donne
1001 0111
.- La réponse est
1001 0111
.
1100 1001
?
- Le bit de poids fort est à
1
, donc ce nombre est négatif ; on applique la méthode.- L'inversion donne
0011 0110
.- L'ajout de donne
0011 0111
- Ce nombre correspond à une partie numérique .
- Le nombre de départ était .
0000 1101
?
- Le bit de poids fort est à
0
, donc ce nombre est positif ; il suffit de lire sa partie numérique.- La partie numérique est
- Le nombre de départ était .
Nous reviendrons sur ce chapitre pour travailler sur les conversions de bases entre binaire, octal et hexadécimal.