Le codage le plus courant est l'équivalent en base deux de la numération de position que nous utilisons quotidiennement en base 10.
Énumération des premiers nombres
Les premiers nombres s'écrivent :
décimal binaire 0 0000 1 0001 2 0010 3 0011 4 0100 5 0101
(Sachant que les colonnes binaires correspondent respectivement à 8,4,2 et 1)
On passe d'un nombre binaire au suivant en ajoutant 1, comme en décimal, sans oublier les retenues et en utilisant les tables d'additions suivantes:
0+0=0 0+1=1 1+0=1 1+1=10
ainsi:
11 + 1 ==== 100
Détail :
1 + 1 = 10 => on pose 0, et retient 1 1 + 1(retenue) = 10 => on pose 0, et retient 1 0 + 1(retenue) = 1 => 1
L'arithmétique binaire (plus simplement le calcul binaire) est utilisé par les systèmes électroniques les plus courants (calculatrices, ordinateurs, etc.) car le niveau de tension peut servir à représenter les deux chiffres 0 et 1 ; 0 représentant l'état bas et 1 l'état haut.
Tout entier naturel peut s'écrire en binaire, c'est-à-dire qu'il se décompose en somme de puissances de 2 (1, 2, 4, 8, 16, 32, 64, etc.), par exemple 35 se décompose en :
(1 * 2) + (0 * 2) + (0 * 2) + (0 * 2) + (1 * 2) + (1 * 2) = 32 + 2 + 1 = 35
donc le nombre décimal 35 se note 100011 en binaire.
Expression d'un nombre
Un nombre décimal à plusieurs chiffres tel que 123 s'exprime ainsi :
1 * 100 + 2 * 10 + 3 * 1 = 1 * 10 + 2 * 10 + 3 * 10
Sa représentation en binaire est 1111011 et s'exprime de la même façon :
1 * 64 + 1 * 32 + 1 * 16 + 1 * 8 + 0 * 4 + 1 * 2 + 1 * 1 = 1 * 2 + 1 * 2 + 1 * 2 + 1 * 2 + 0 * 2 + 1 * 2 + 1 * 2
Représentation des entiers positifs
Pour trouver la représentation binaire d'un nombre, on le décompose en somme de puissances de 2. Par exemple avec le nombre dont la représentation décimale est 42 :
42 = 32 + 8 + 2 42 = 2 + 2 + 2 42 = 1×2 + 0×2 + 1×2 + 0×2 + 1×2 + 0×2 42 = 101010 en binaire
Avec N bits, ce système permet de représenter les nombres entre 0 et 2-1. Il est donc possible de compter sur ses dix doigts jusqu'à 1023 (2-1) en binaire (à condition de savoir lever chaque doigt indépendamment). Un doigt baissé représente 0, et un doigt levé représente une puissance de 2 correspondant au doigt, par exemple :
Doigt Main Puis. Valeur en de 2 numération décimale Auriculaire de la main droite levé 20 1 Annulaire » 21 2 Majeur » 22 4 Index » 23 8 Pouce » 24 16 Pouce de la main gauche levé 25 32 Index » 26 64 Majeur » 27 128 Annulaire » 28 256 Auriculaire » 29 512 ------- Somme =1 023 (Pour mémoire 2^10 =1 024)
Ceci confirme la formule
2-1=2+2+...+2
Représentation des entiers négatifs
Pour compléter la représentation des entiers, il faut pouvoir écrire des entiers négatifs. On ajoute pour cela à la représentation un bit de signe, placé en tête. Un bit de signe nul indique une valeur positive, un bit de signe positionné à 1 est une valeur négative. Cette règle permet de rester cohérent avec le système de représentation des entiers positifs : il suffit d'ajouter un 0 en tête de chaque valeur.
Complément à un
Ce codage, fort simple, consiste à inverser la valeur de chaque bit composant une valeur binaire.
Par exemple, pour obtenir -7 :
0111 valeur décimale 7 1000 complément à un
Le souci avec un tel système est qu'il y a toujours deux représentations de la valeur 0 pour un nombre de bit donné.
Complément à deux
Afin de pallier ce défaut, on a introduit la représentation par complément à deux. Celle-ci consiste à réaliser un complément à un de la valeur, puis d'ajouter 1 au résultat.
Par exemple pour obtenir -7:
0111 codage de 7 en binaire 1000 complément à un 1001 on ajoute 1 : représentation de -7 en complément à deux
Ce codage a l'avantage de ne pas nécessiter de différenciation spéciale des nombres positifs et négatifs, et évite en particulier le problème d'ordinateurs anciens (Control Data 6600) qui avaient un « +0 » et un « -0 » dont il fallait faire comprendre aux circuits de tests que c'était le même nombre ! Voici une addition de -7 et +9 réalisée en complément à deux sur 4 bits :
-7 1001 +9 1001 __ ____ 2 (1) 0010 (on 'ignore' la retenue)
Avec n bits, ce système permet de représenter les nombres entre -2 et 2-1.
Entre les bases 2, 8 et 16
Du binaire vers octal ou hexadécimal
Les bases 8 (octale) et 16 (hexadécimale) sont des bases multiples de la base 2. Ces deux bases ont été couramment employées en informatique et pour des raisons pratiques; ces bases étant fortement liées à la base 2 et les nombres écrits dans ces bases étant plus "manipulables" (car d'écriture plus courte) par l'intellect humain. L'écriture de nombres dans ces bases est facilement obtenue par regroupement de chiffres de l'écriture du nombre en base 2.
-
Octal : base 8 : 8 = 2, il suffit de regrouper à partir de la droite et par paquets de 3 les chiffres binaires (voir bāguà). Chaque paquet de 3 (le dernier devant être parfois complété par des 0 à gauche), étant l'écriture binaire d'un chiffre en base 8 (08=000, 18=001, 28=010, 38=011, 48=100, 58=101, 68=110, 78=111).
-
101011011102 va s'écrire 10 101 101 110 et en convertissant la valeur de chacun des blocs en un chiffre octal, on obtient le nombre octal 25568.
-
Hexadécimal : base 16 : 16 = 2, donc on regroupe à partir de la droite et par paquets de 4 les chiffres binaires. Chaque paquet de 4 bits étant la représentation binaire d'un chiffre en base 16. Il faut donc 16 chiffres, il a été décidé d'utiliser les 10 chiffres décimaux plus les 6 premiers caractères de l'alphabet avec la convention suivante: A16=1010=10102, B16=1110=10112, C16=1210=11002, D16=1310=11012, E16=1410=11102 et F16=1510=11112.
-
101011011102 va s'écrire 101 0110 1110 et en convertissant la valeur de chacun des blocs en décimal on obtient : 5, 6, 14 c'est-à-dire 56E16.
On pourrait facilement étendre ce principe à toutes les bases qui sont puissances de 2.
Vers le binaire
Il suffit de convertir la valeur de chacun des chiffres sous leur forme binaire.
- 1A2F16 va s'écrire 1, 10=8+2, 2, 15=8+4+2+1 soit 1 1010 0010 11112
- 1568 va s'écrire 1, 5=4+1, 6=4+2 soit 1 101 1102