Dans la section précédente, nous avons vu que toutes les informations gérées par un système numérique étaient représentées par des suites de nombres avec une précision finie. Nous avons proposé un exemple dans lequel nous effectuons des relevés de température à intervalles réguliers et nous notons les valeurs arrondies au degré près.
Dans la vie courante, pour noter ces valeurs, nous utilisons généralement le système de numération décimal (également appelé base 10), dans lequel les nombres s’écrivent à l’aide de dix chiffres (0, 1, 2, 3, 4, 5, 6, 7, 8 et 9). Ici, nous prendrons bien soin de distinguer les notions de chiffre et de nombre : les chiffres sont des symboles qui servent à écrire les nombres. Dans notre exemple, la représentation des informations est donc à deux niveaux :
Le fait d’utiliser dix chiffres est purement arbitraire. Historiquement, ce choix découle certainement du fait que nous utilisons les doigts de nos deux mains pour compter, ce qui donne un statut particulier à la notion de dizaine. En réalité, d’autres systèmes de numération sont possibles.
Un chiffre seul représente un nombre entier compris entre zéro et neuf. Un nombre supérieur ou égal à dix s’écrira comme une séquence de chiffres, chacun associé à un poids différent en fonction de sa position : unités, dizaines, centaines, milliers, etc. Par exemple, en notation décimale, le nombre 7405 se décompose de la manière suivante :
1000 | 100 | 10 | 1 |
---|---|---|---|
7 | 4 | 0 | 5 |
La première ligne du tableau indique le poids associé à chaque chiffre. Le chiffre le plus à droite a toujours un poids égal à 1. En continuant de droite à gauche, le poids d’un chiffre est égal à dix fois le poids du chiffre précédent.
La valeur de ce nombre s’obtient en multipliant la valeur de chaque chiffre par le poids qui lui est associé, et en additionnant les produits :
Ou encore :
Dans le cas général, un nombre entier naturel s’écrit en décimal comme une séquence de chiffres tels que :
En électronique numérique, le choix s’est porté sur un système à deux chiffres, le système de numération binaire (également appelé base 2). Un chiffre binaire est appelé un bit, contraction de l’anglais « binary digit ». Il peut prendre les valeurs 0 et 1.
Le bit constitue la plus petite unité d’information possible. Un bit suffit pour représenter l’état d’un système simple fonctionnant en tout-ou-rien : une lampe allumée ou éteinte, un interrupteur ouvert ou fermé, la présence ou l’absence d’un objet devant un capteur, etc. En regroupant plusieurs bits, il est possible de représenter des ensembles de valeurs plus grands. Par exemple :
À chaque fois que l’on ajoute un bit, on multiplie par deux le nombre de valeurs possibles. Avec bits, il est donc possible de représenter valeurs différentes.
Le plus souvent, en informatique, les données sont représentées par des groupes dont la taille est multiple de huit. Un groupe de huit bits est appelé un octet, ou en anglais un byte.
Dans la suite de ce document, nous ajouterons le suffixe « bin » aux valeurs représentées en binaire afin de les distinguer des valeurs représentées en décimal. Par exemple :
Un bit seul représente un nombre égal à zéro ou un. Un nombre supérieur ou égal à deux s’écrira comme une séquence de bits, chacun associé à un poids différent en fonction de sa position : le bit le plus à droite a toujours un poids égal à 1 ; en continuant de droite à gauche, le poids d’un bit est égal à deux fois le poids du bit précédent.
Par exemple, le nombre se décompose de la manière suivante :
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
---|---|---|---|---|---|---|---|
1 | 0 | 1 | 0 | 1 | 1 | 0 | 1 |
La valeur de ce nombre s’obtient en multipliant la valeur de chaque bit par le poids qui lui est associé, et en additionnant les produits :
Ou encore :
Dans le cas général, un nombre entier naturel s’écrit en binaire comme une séquence de bits tels que :
Les puissances de deux sont identifiables au fait que leur représentation binaire ne comporte qu’un bit à 1. Il est recommandé de connaître par cœur les valeurs ou les ordres de grandeurs de certaines puissances de deux caractéristiques.
Puissance de deux | Décimal | Binaire |
---|---|---|
1 | 0…0 0001 | |
2 | 0…0 0010 | |
4 | 0…0 0100 | |
8 | 0…0 1000 | |
16 | 0…0 0001 0000 | |
32 | 0…0 0010 0000 | |
64 | 0…0 0100 0000 | |
128 | 0…0 1000 0000 | |
256 | 0…0 0001 0000 0000 | |
512 | 0…0 0010 0000 0000 | |
1 024 (proche de 1000) | 0…0 0100 0000 0000 | |
65 536 | 0…0 0001 0000 0000 0000 0000 | |
1 048 576 (proche de 1 000 000) | 0…0 0001 0000 0000 0000 0000 0000 |
étant proche de mille, il est fréquemment utilisé comme facteur pour mesurer de grandes quantités de données. Par abus de langage on parle de kilooctet (ou ko, en principe mille octets) alors qu’on mesure en réalité 1024 octets. De même on parle de mégaoctet (ou Mo, en principe un million d’octets) alors qu’on mesure en réalité 1 048 576 octets.
Pour éviter des confusions, les principaux préfixes normalisés sont les suivants :
Préfixe | Symbole | Facteur |
---|---|---|
kibi | Ki | |
mébi | Mi | |
gibi | Gi | |
tébi | Ti |
On ne doit donc pas parler de kilooctet (ko) mais de kibioctet (Kio).
Une erreur fréquente chez les débutants consiste à croire qu’il existe des nombres décimaux et des nombres binaires. En réalité, un nombre n’est ni décimal, ni binaire. Un nombre représente juste une quantité abstraite qui peut s’écrire en utilisant le système décimal, le système binaire, les chiffres romains ou tout autre système de notre choix. Par exemple, l’octet et les chiffres représentent exactement le même nombre.
Pour obtenir la représentation binaire d’un nombre, il existe typiquement deux manières de procéder.
Supposons que nous souhaitions connaître la représentation binaire du nombre 45 sur 8 bits. Nous nous proposons de compléter le tableau suivant :
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
---|---|---|---|---|---|---|---|
? | ? | ? | ? | ? | ? | ? | ? |
Nous allons parcourir ce tableau du bit de poids fort (à gauche) vers le bit de poids faible (à droite).
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
---|---|---|---|---|---|---|---|
0 | 0 | 1 | ? | ? | ? | ? | ? |
Nous devons à présent représenter la valeur avec les bits restants.
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
---|---|---|---|---|---|---|---|
0 | 0 | 1 | 0 | 1 | ? | ? | ? |
Nous devons à présent représenter la valeur avec les bits restants. En observant que , nous pouvons rapidement compléter le tableau :
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
---|---|---|---|---|---|---|---|
0 | 0 | 1 | 0 | 1 | 1 | 0 | 1 |
Nous pouvons vérifier le résultat en calculant :
Cette fois, nous allons parcourir le tableau du bit de poids faible (à droite) vers le bit de poids fort (à gauche).
Nous observons que le nombre 45 est impair. Or, seul le bit de poids faible a un poids impair. Nous pouvons donc inscrire un 1 dans la case correspondante :
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
---|---|---|---|---|---|---|---|
? | ? | ? | ? | ? | ? | ? | 1 |
Nous devons à présent représenter la valeur avec les bits restants. Si nous divisons cette valeur par deux, et si nous divisons en même temps les poids par deux, cela revient à représenter la valeur en binaire sur 7 bits :
64 | 32 | 16 | 8 | 4 | 2 | 1 | – |
---|---|---|---|---|---|---|---|
? | ? | ? | ? | ? | ? | ? | 1 |
Nous observons que le nombre 22 est pair. Le bit de poids 1 est donc forcément nul :
64 | 32 | 16 | 8 | 4 | 2 | 1 | – |
---|---|---|---|---|---|---|---|
? | ? | ? | ? | ? | ? | 0 | 1 |
Nous devons à présent représenter la valeur avec les bits restants. Si nous divisons cette valeur par deux, et si nous divisons en même temps les poids par deux, cela revient à représenter la valeur en binaire sur 6 bits :
32 | 16 | 8 | 4 | 2 | 1 | – | – |
---|---|---|---|---|---|---|---|
? | ? | ? | ? | ? | ? | 0 | 1 |
Nous observons que le nombre 11 est impair. Le bit de poids faible est donc égal à 1 :
32 | 16 | 8 | 4 | 2 | 1 | – | – |
---|---|---|---|---|---|---|---|
? | ? | ? | ? | ? | 1 | 0 | 1 |
Nous devons à présent représenter la valeur avec les bits restants. Si nous divisons cette valeur par deux, et si nous divisons en même temps les poids par deux, cela revient à représenter la valeur en binaire sur 5 bits :
16 | 8 | 4 | 2 | 1 | – | – | – |
---|---|---|---|---|---|---|---|
? | ? | ? | ? | ? | 1 | 0 | 1 |
Nous observons que le nombre 5 est impair. Le bit de poids faible est donc égal à 1 :
16 | 8 | 4 | 2 | 1 | – | – | – |
---|---|---|---|---|---|---|---|
? | ? | ? | ? | 1 | 1 | 0 | 1 |
Nous devons à présent représenter la valeur avec les bits restants. Nous pouvons immédiatement compléter le tableau en écrivant 1 sous le poids 4, et 0 partout ailleurs.
16 | 8 | 4 | 2 | 1 | – | – | – |
---|---|---|---|---|---|---|---|
0 | 0 | 1 | 0 | 1 | 1 | 0 | 1 |
Cette technique peut sembler plus fastidieuse que la précédente. La technique des soustractions successives est rapide lorsque nous devons déterminer la représentation binaire d’un nombre à la main. La technique des divisions successives repose sur des opérations plus simples (déterminer si un nombre est pair, diviser par deux) et peut être facilement programmée.
Voici un algorithme pour obtenir la représentation binaire b
d’un entier K
sur N
bits :
pour i de 0 à N-1 répéter
si K est pair alors
b[i] ← 0
sinon
b[i] ← 1
fin si
K ← partie entière(K/2)
fin répéter
Comme en électronique analogique, un circuit numérique est construit avec des composants qui réagissent à des variations de tension, de courant ou d’impédance. Cela signifie qu’un circuit numérique ne manipule pas des nombres abstraits mais que ces nombres doivent être eux-mêmes traduits en grandeurs électriques.
Typiquement, un circuit numérique possède deux broches d’alimentation. Elles sont souvent nommées (pôle positif) et (pôle négatif) pour les circuits composés de transistors à effet de champ.
Ainsi, dans un circuit électronique numérique, la représentation des informations est à trois niveaux. Par exemple, dans un thermomètre électronique :
Un chiffre binaire est appelé un bit (binary digit). Il peut prendre les valeurs 0 et 1.
Un groupe de huit bits est appelé un octet, ou en anglais un byte.
Un groupe de bits peut représenter valeurs différentes. Par exemple, il peut représenter les entiers naturels de 0 à .
Dans le système de numération binaire, chaque bit possède un poids égal à une puissance de deux.
En électronique numérique, un bit est représenté par un niveau de tension électrique, proche de pour un 1, proche de pour un 0.