[Petite incursion dans l’arithmétique binaire avec ce quarante-troisième article issu de Ma petite encyclopédie.
Bonne journée à tous !]
Complément à deux
Représentation des nombres binaires en machine permettant d’effectuer efficacement les opérations arithmétiques sur les entiers relatifs (signés).
Une chaîne de n bits peut représenter les entiers relatifs contenus dans l’intervalle :
[- 2n-1, 2n-1 – 1]
On ne peut utiliser le complément à deux que pour des nombres binaires ayant la même longueur (on s’en tiendra ici aux octets).
Le bit le plus à gauche (dit de poids fort) donne le signe du nombre représenté; c’est le bit de signe. Si on représente la valeur absolue simplement par sa valeur en binaire, on a par exemple :
0000 1001 = +9 en décimal
1000 1001 = -9 en décimal
Cette manière de faire est simple mais présente deux inconvénients :
– d’une part 0 dispose de deux représentations différentes (un zéro positif et un zéro négatif en quelque sorte) :
0000 0000 et 1000 0000
– d’autre part, l’addition usuelle de deux valeurs ne donne pas la valeur de leur somme.
On a par exemple :
0000 1001 + 1000 1001 = 1000 1001
soit 9 – 9 = 137 !
Plutôt que de modifier l’algorithme de l’addition entre nombre binaires, on utilise la représentation en complément à deux.
Les nombres positifs sont représentés normalement (avec leur bit de signe à 0), la représentation de la valeur absolue des nombres négatifs est obtenue de la manière suivante :
on inverse d’abord les bits de la valeur absolue (ce qui s’appelle faire un complément à 1), puis on ajoute une unité.
Ces deux opérations reviennent à calculer 2n – |x| ou n est la longueur de la chaîne de bits utilisée.
Cette représentation permet d’éviter les deux inconvénients évoqués ci-dessus.
Exemple.
Représentation du nombre – 9 :
Le bit de signe sera à 1.
La représentation de la valeur absolue s’obtient à partir de sa représentation en binaire sur 7 bits : 000 1001. On inverse tous les bits ce qui donne 111 0110 et on ajoute 1 ce qui donne 111 0111.
En ajoutant le bit de signe, la valeur du complément à 2 de – 9 est :
1111 0111
L’addition est maintenant possible sans erreur :
Par exemple :
1111 0111 + 0000 1100 = 0000 0011 (-9 + 12 = 3)
Vidéos
La vidéo suivante explique de manière très claire comment utiliser le complément à deux :
Sur le codage des nombres négatifs :
Technique d’impression inventée par Aloys Senefelder basée sur la répulsion entre l’eau et les matières grasses.
Reproduction obtenue grâce à cette technique d’impression.
Presse lithographique (Source : Wikimedia Commons, auteur : Chris 73, licence :
Presse lithographique (Source: Wikimedia Commons, Domaine public).
Pierre lithographique et impression réalisée avec elle (Source : Wikimedia Commons, auteur : Chris 73, licence :
Pierre lithographique destinée à imprimer des étiquettes de bouteille. On distingue 5 sélections destinées aux impressions successives de 5 couleurs. (Source : Wikimedia Commons, auteur : G. Mannaerts, licence :
Un exemple de lithographie. Elle représente le célèbre médecin Claude Bernard (1813-1878). (Source : Wikimedia Commons, lithographie de Rudolf Hoffmann, 1856, domaine public).
Lithographie en couleurs de Jules Chéret (1836–1932). (Source : Wikimedia Commons, domaine public)
Gravure mécanique d’un cylindre (Source : Wikimedia Commons, licence :
Charles Babbage. Portrait publié dans The Illustrated London News en 1871.
La machine à différences de Babbage
La machine à différences, détail (Source : Wikimedia Commons, auteur : Jitze Couperus from Los Altos Hills, California, USA, licence :
Georges Auriol par Georges Redon (Jules Georges Redon)
Le Premier Livre des cachets, marques et monogrammes par George Auriol (Paris: Librairie centrale des beaux-arts, 1901)
Monogrammes (Source : Wikimedia Commons, domaine public).
Mère et fille, gravure sur bois
Bandeau Avril créé par George Auriol pour le Larousse illustré mensuel, 1942 (Source : Wikimedia Commons, domaine public).
Scheherazade de Georges Auriol, publié par Art et Décoration en 1901. Lithographie en couleurs.
La police Auriol (Source Wikimedia Commons, domaine public)
La police Robur, créée par George Auriol
Diagramme du modèle OSI (Source : Wikimedia Commons, domaine public).
Les formats de la série A (Source : CLEANPNG, domaine public)