Aller au contenu

Système binaire

Un article de Wikipédia, l'encyclopédie libre.
(Redirigé depuisChiffres binaires)
Exemple d'informations binaires.

Lesystème binaire(du latinbinārĭus,« double ») est lesystème de numérationutilisant labase2.On nomme courammentbit(de l'anglaisbinary digit,soit « chiffre binaire ») leschiffresde la numération binaire positionnelle. Un bit peut prendre deux valeurs, notées par convention0et1.

Le système binaire est utile pour représenter le fonctionnement de l'électronique numériqueutilisée dans lesordinateurs.Il est donc utilisé par leslangages de programmation de bas niveau.

La plupart deslangages de programmationpossèdent nativement lesfonctionsnécessaires à son utilisation.

Page qui décrit le système binaire par Leibniz.

Le système binaire le plus courant est labase deuxmathématique,permettant de représenter desnombresà l'aide de lanumération de positionavec seulement deux chiffres: le 0 et le 1.

Dans ce type de codage, chaque nombre est représenté de façon unique par une suite ordonnée dechiffres.Et chaque positionmreprésente unepuissance(m− 1) de labase.Si l'on se limite dans un premier temps auxnombres entierspositifs, enbase dixces puissances sont: un (1), dix (représenté par 10), cent (dix fois dix, représenté par 100), mille (dix fois cent, représenté par 1000), dix mille, etc. En base deux, ces puissances sont: un (1), deux (représenté lui aussi par 10), quatre (deux fois deux, représenté par 100), huit (deux fois quatre, représenté par 1000), seize (deux fois huit, représenté par 10000), etc.

On voit que la signification des représentations 10, 100, 1000, etc. dépend de la base utilisée: 10 est toujours égal à la base, c'est-à-diredixen base dix, maisdeuxen base deux.

En base dix, on utilise dix chiffres, de zéro à neuf; en basen,on utilisenchiffres, de zéro àn– 1; donc en base deux on utilise les deux chiffres « 0 » et « 1 ».

Un nombre qui s'exprime en baseBpar les quatre chiffres 1101 s'analyse:

,qui donne:

1101 en baseB= 10:
1101 en baseB= 8:
1101 en baseB= 2:

Énumération des premiers nombres

[modifier|modifier le code]

Les premiers nombres, et chiffres de la base de numération 10, s'écrivent:

décimal binaire commentaire
0 0 zéro
1 1 un = base puissance zéro (valable pour toutes les bases, donc deux et dix)
2 10 deux = deux puissance un (un zéro derrière le 1)
3 11
4 100 quatre = deux puissance deux (deux zéros derrière le 1)
5 101
6 110
7 111
8 1000 huit = deux puissance trois (trois zéros derrière le 1)
9 1001

On donne à chaque bit unepuissance de deux,comme cette suite 1, 2, 4, 8, 16, 32, 64. Pour obtenir le nombre 7, on additionne les trois premiers bits; pour obtenir 6, on additionne seulement le bit de poids 4 et le bit de poids 2.

Les techniques des quatre opérations de base (addition,soustraction,multiplicationetdivision) restentexactement les mêmesqu'en notation décimale; elles sont juste simplifiées de façon drastique parce qu'il n'y a que les deux chiffres 0 et 1. Pour la multiplication par exemple, quelle que soit la base, la multiplication par 10 (c’est-à-dire par la base elle-même)[1]se fait en ajoutant un zéro à droite.

Seules changent d'une part la forme de la suite de chiffres qui exprime le résultat (elle ne compte que des zéros et un), d'autre part la signification de cette suite (10 signifie « deux » et non « dix », 100 signifie « quatre » et non « cent », etc.).

Addition et soustraction

[modifier|modifier le code]

On passe d'un nombre binaire au suivant en ajoutant 1, comme en décimal, sans oublier les retenues et en utilisant la table ordinaire (mais réduite à sa plus simple expression):

0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 0 avec 1 retenue
0 - 0 = 0 0 - 1 = 1 avec 1 retenue 1 - 0 = 1 1 - 1 = 0

On constate que l'addition de deux bits A et B donne A XOR B avec une retenue valant A ET B.

Ainsi:

11
+ 1
____
100

Détail:

1 + 1 = 10 => on pose 0 et on retient 1
1 + 1(retenue) = 10 => on pose 0 et on retient 1
0 + 1(retenue) = 1 => on pose 1 devant 00


Multiplication et division

[modifier|modifier le code]

Multiplier par deux se fait en décalant chaque chiffre d'un cran à gauche et en insérant un zéro à la fin.
Par exemple, deux fois onze:

1011 onze
//// décalage et insertion de 0
10110 vingt-deux

La division entière par deux se fait en décalant chaque chiffre d'un cran à droite, le chiffre de droite étant le reste supprimé.
Par exemple onze divisé par deux:

1011 onze
\\\ décalage et suppression du chiffre à droite
101 cinq reste un

Théorie informatique

[modifier|modifier le code]

L'arithmétique binaire (plus simplement le calcul binaire) est utilisée par les systèmes électroniques les plus courants (calculatrices, ordinateurs, etc.). Les deux chiffres 0 et 1 s'y traduisent par latensionou le passage d'un courant.

Par exemple, le 0 peut être représenté par l'état bas (tension ou courant nul) et 1 par l'état haut[réf. nécessaire](tension qui existe, courant qui passe).

Représentation des entiers négatifs

[modifier|modifier le code]

Pour compléter la représentation des entiers, il faut pouvoir écrire des entiersnégatifs. Deux représentations existent, lecomplément à unet lecomplément à deux.

Vérifications requises

[modifier|modifier le code]

Avant de coder avec tout complément, il est nécessaire de vérifier le bon nombre de bits est utilisés pour encoder le nombre en tant que nombre binaire signé.

Le nombre de bits est suffisant si et seulement s'il vérifie l'équation où n correspond au nombre de bits et N au nombre à encoder.

correspond au nombre de caractères possibles (1 est soustrait à 2n puisque l'on compte à partir de 0) tout en réservant un bit pour le signe.

Complément à un

[modifier|modifier le code]

Ce codage consiste à inverser la valeur de chaque bit.
Par exemple pour obtenir −7:

0111 sept
1000 moins sept

Un défaut de ce système est que zéro a deux représentations: 0000 et 1111 (« +0 » et « −0 »). Il n'est pas utilisé par les ordinateurs courants, mais l'était par des ordinateurs anciens comme leControl Data 6600.Les deux représentations du zéro compliquent les circuits de test.

Complément à deux

[modifier|modifier le code]

Le complément à deux consiste à réaliser un complément à un, puis d'ajouter 1.
Par exemple pour obtenir −7:

0111 sept
1000 complément à un
1001 complément à deux en ajoutant 1

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 de double représentation du zéro.

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)

Avecnbits, ce système permet de représenter les nombres entre −2n−1et 2n−1− 1.

Entre les bases 2, 8 et 16

[modifier|modifier le code]

Du binaire vers octal ou hexadécimal

[modifier|modifier le code]

Les bases 8 (octale) et 16 (hexadécimale) sont des bases puissances de la base 2. Ces deux bases sont couramment employées en informatique pour des raisons pratiques: les nombres écrits dans ces bases sont humainement plus « manipulables » car d'écriture plus courte et celle-ci est facilement obtenue par regroupement de chiffres de l'écriture du nombre en base 2.

  • Octal: base 8 = 23.Il suffit de parcourir le nombre binaire de la droite vers la gauche en regroupant les chiffres binaires 3 par 3: chaque paquet de 3 (le dernier devant être parfois complété par des 0 à gauche) est 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).
    • 101011011102va 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 = 24.Il suffit de parcourir le nombre binaire de la droite vers la gauche en regroupant les chiffres binaires 4 par 4: chaque paquet de 4 bits est la représentation binaire d'un chiffre en base 16. En base 16, il faut 16 symboles et conventionnellement, on utilise les 10 chiffres décimaux suivis des 6 premiers caractères de l'alphabet selon la règle suivante: A16= 1010= 10102,B16= 1110= 10112,C16= 1210= 11002,D16= 1310= 11012,E16= 1410= 11102et F16= 1510= 11112.
    • 101011011102va 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

[modifier|modifier le code]

Il suffit de convertir la valeur de chacun des chiffres sous leur forme binaire en utilisant un nombre de chiffres correspondant à la puissance de la base: 16 = 24,8 = 23,donc 4 chiffres pour l'hexadécimal et 3 pour l'octal:

  • 1A2F16va s'écrire 1 ⇒ 0001, A ⇒ 1010, 2 ⇒ 0010, F ⇒ 1111, soit 0001 1010 0010 11112.
  • 1568va s'écrire 1 ⇒ 001, 5 ⇒ 101, 6 ⇒ 110, soit 001 101 1102.

Table des valeurs des groupements de chiffres binaires

[modifier|modifier le code]
Binaire Décimal Octal Hexadécimal
0000 0 0 0
0001 1 1 1
0010 2 2 2
0011 3 3 3
0100 4 4 4
0101 5 5 5
0110 6 6 6
0111 7 7 7
Binaire Décimal Octal Hexadécimal
1000 8 10 8
1001 9 11 9
1010 10 12 A
1011 11 13 B
1100 12 14 C
1101 13 15 D
1110 14 16 E
1111 15 17 F

Code de Gray ou binaire réfléchi

[modifier|modifier le code]

Le code de Gray, également appelé binaire réfléchi, permet de ne faire changer qu'un seul bit à la fois quand un nombre est incrémenté ou décrémenté d'une unité. Le nom du code vient de l'ingénieur américainFrank Gray,qui déposa un brevet sur ce code en 1947[2].

Pour calculer directement le code de Gray d'un entier à partir de celui de son prédécesseur on peut procéder ainsi:

  • lorsqu'il y a un nombre pair de 1 on inverse le dernier bit;
  • lorsqu'il y a un nombre impair de 1 on inverse le bit directement à gauche du 1 le plus à droite.

Décimal codé binaire (DCB, ou BCD pourbinary coded decimal)

[modifier|modifier le code]

Afin de concilier la logique binaire de l'ordinateur avec la logique humaine, on peut convertir en binaire, plutôt que les nombres eux-mêmes, chacun des chiffres qui les composent en notation décimale positionnelle. Chacun de ces chiffres est alors codé sur 4 bits:

1994 = 0001 1001 1001 0100
1×1000 + 9×100 + 9×10 + 4×1

Avec n bits (n multiple de 4), il est possible de représenter les nombres entre 0 et 10n/4-1. Soit approximativement entre 0 et 1.778n-1.

Le DCB est un code redondant. En effet, certaines combinaisons ne sont pas utilisées. Par exemple,1111ne pourra pas être utilisé.

Cette représentation évite, par construction, tous les problèmes gênants de cumul d'arrondi.Ceux-ci peuvent intervenir lors de la manipulation de grands nombres dépassant la taille des circuits en arithmétique entière. Ils obligent alors à recourir auflottant.

Il est cependant possible de manipuler desnombres à précision arbitraireen utilisant un codage plus efficace que le DCB.

Il existe des variantes du codage DCB:

  • le code Aiken où 0, 1, 2, 3, 4 sont codés comme en DCB et 5, 6, 7, 8, 9 sont codés de 1011 à 1111; ce code permet d'obtenir le complément à 9 en permutant les 1 et les 0;
  • le codage binaire excédant 3, qui consiste à représenter le chiffre à coder + 3.

Théorie de l'information

[modifier|modifier le code]

Enthéorie de l'information,l'entropied'une source d'information est exprimée enbits.La théorie elle-même est indifférente à la représentation des grandeurs qu'elle utilise.

Lalogique classiqueest une logique bivalente: une proposition est soit vraie, soit fausse. Il est donc possible de représenter la vérité d'unepropositionpar un chiffre binaire.

On peut, par exemple, modéliser les opérations de l'arithmétique binaire à l'aide de l'algèbre de Boole.

L'algèbre de Boole représente un cas très particulier d'usage desprobabilitésne faisant intervenir que les seules valeurs de vérité 0 et 1. LeThéorème de Cox-Jaynesen est une autre illustration.

Le binaire est utilisé en informatique car il permet de modéliser le fonctionnement descomposants decommutationcomme leTTLou leCMOS.La présence d'un seuil detensionaux bornes destransistors,en négligeant la valeur exacte de cette tension, représentera 0 ou 1.

Par exemple, le chiffre 0 sera utilisé pour signifier une absence de tension à 0,5Vprès, et le chiffre 1 pour signifier sa présence à plus de 0,5V.Cettemarge de tolérancepermet de pousser les cadences desmicroprocesseursà des valeurs atteignant plusieursgigahertz.

Eninformatique,la représentation binaire permet de clairement manipuler desbits:chaque chiffre binaire correspond à un bit. Cependant, la représentation binaire nécessitant l'usage de beaucoup de chiffres, même pour des nombres assez petits. Elle entraîne d'importants problèmes delisibilitéet donc derisques d'erreurde transcription pour les programmeurs. On préfère donc d'autresreprésentations:lanotation hexadécimale,qui permet de manipuler l'information par paquets de 4 bits, est adaptée à la quasi-totalité desmicroprocesseursactuels travaillant avec desmotsde 8, 16, 32 ou 64 bits; plus rare, la notationoctale,populaire du temps des premiersmini-ordinateursDECà 12 ou 36 bits, qui permet de représenter l'information par paquets de 3 bits.

  • 63(10)= 111111(2)= 77(8)= 3F(16)
  • 64(10)= 1000000(2)= 100(8)= 40(16)
  • 255(10)= 11111111(2)= 377(8)= FF(16)
  • 256(10)= 100000000(2)= 400(8)= 100(16)
  • Leshexagrammeschinois, plus tard reconnus comme la première expression d'une numération binaire, apparaissent dans leYi Jingvers 750 av J.C,période des Zhou de l'Ouest[3].Mais leur signification mathématique, si elle a été connue, fut oubliée ensuite[4].
  • Le mathématicienindienPingalaest crédité d'une table représentant 0 à 7 en numération binaire, dans sonChandaḥ-śāstra,datant peut-être du troisième ou deuxième siècle av J.C.[5],[6].
  • Vers 1600, le mathématicien anglaisThomas Harrioteffectue des opérations en numération binaire, ainsi qu'en témoigne ses manuscrits publiés récemment seulement[7].
  • À la même époqueFrancis Baconutilise un code secret bilitère (à deux lettres) pour protéger ses messages: il remplace les lettres du message par leur position en binaire, puis les 0 et les 1 par des A et des B. Exemple: lettre E → 5 → 00101 → codée AABAB[8].
  • John Napier,mathématicien écossais inventeur des logarithmes, dans son traitéRhabdologiepublié en 1617, décrit trois systèmes pour faciliter les calculs, dont un, ditcheckerboard,est binaire[9].
  • L'espagnolCaramueldans sonMathesis biceps vetus et novapublié en 1670, paraît le premier à avoir donné une étude des numérations non décimales, dont binaire, succinctement[10].
  • ÀLeibnizrevient d'avoir étudié le système binaire pour lui-même, montré comment s'y pratiquent les quatre opérations (« si aisées qu’on n’a jamais besoin de rien essayer ni deviner, comme il faut faire dans la division ordinaire[11]»), noté que ce calcul « est le plus fondamental pour la science, et donne de nouvelles découvertes[11]», et même envisagé que « ce type de calcul pourrait également être réalisé avec une machine (sans roues), de la manière suivante certainement très facilement et sans effort. Avec une boîte munie de trous, qui peuvent être ouverts et fermés[12]
    En outre, ayant communiqué « au R. P.Bouvet,Jésuite Français célèbre, qui demeure à Pékin, (sa) manière de compter par 0 et 1, il n’en fallut pas davantage pour lui faire reconnaître que c’est la clef des figures de Fohy », en 1701[11].Ainsi fut déchiffrée l’énigme deshexagrammesattribués àFuxi,et Leibniz fait ensuite publier son exposé du système binaire par l'Académie des sciences de Parisen 1703[11].
  • En 1847George Boolepublie les premiers travaux de sonalgèbre binaire, dite booléenne,n'acceptant que deux valeurs numériques: 0 et 1.
  • 1872: publication d'une application du système binaire pour la résolution du problème du baguenodier (Luc-Agathon-LouisGros,Théorie du baguenodier par un clerc de notaire lyonnais,Lyon,Aimé Vingtrinier,(lire en ligne))
  • 1876: L.-V. Mimault dépose le brevet 3011 concernant:
    • les systèmes télégraphiques multiples, imprimeurs et écrivants basés sur des combinaisons mécaniques ou graphiques provenant de « (X+ 1) puissancem»;
    • les systèmes télégraphiques multiples, imprimeurs et écrivants basés sur des combinaisons de la progression 1: 2: 4: 8: 16[13].

Notes et références

[modifier|modifier le code]
  1. Attention: 10 et nondix;en base deux, 10 vautdeux.
  2. (en)Frank Gray pourBell Labs,Brevet U.S. 2,632,058:Pulse code communication,déposé le 13 novembre 1947, publié le 17 mars 1953, surGoogle Patents.
  3. (en)E. L. Shaugnessy, « I Ching (Chou I) », dans M. Loewe (dir.),Early Chinese Texts: A Bibliographical Guide,Berkeley, 1993, p. 216-228.
  4. Témoignage du pèreBouvetrapporté par Leibniz (sur Wikisource).
  5. (en)Kim Plofker,Mathematics in India,Princeton (N.J.),Princeton University Press,,357p.(ISBN978-0-691-12067-6,lire en ligne),chap.3(« Mathematical Traces in the Early Classical Period »),p.55-57.
  6. (en)B.Van NootenBinary numbers in Indian antiquity»,Journal of Indian Philosophy,vol.21,no1,‎,p.31–50(ISSN0022-1791,DOI10.1007/BF01092744).
  7. L’édition électronique des manuscrits de Thomas Harriot (1560-1621);fac-similé en ligne.
  8. (en)Bacon's cipher.
  9. (en)John Napier,Rabdologiæ,traduit du latin par William Frank Richardson, 'ntroduction par Robin E. Rider, 1990, MIT Press(ISBN0-262-14046-2).
  10. Robert Ineichen,Leibniz, Caramuel, Harriot und das Dualsystem,Mitteilungen der deutschen Mathematiker-Vereinigung, vol. 16, 2008, issue 1, p. 14.
  11. abcetdLeibniz,Explication de l'arithmétique binaire, qui se sert des seuls caractères 0 et 1, avec des remarques sur son utilité, et sur ce qu'elle donne le sens des anciennes figures chinoises de Fohy(lire sur Wikisourceet surMémoires de l'Académie des sciencesde Paris, 1703,p.85-89).
  12. De progressione dyadica,manuscrit daté de 1679, traduction de Yves Serra, p. 5 (lire en ligne); voir aussi Yves Serra,Le manuscrit « De Progressione Dyadica » de Leibniz(lire en lignesurBibnum).
  13. Description des notescontenues dans le brevet sous plis.

Sur les autres projets Wikimedia:

Sur les autres projets Wikimedia:

Sur les autres projets Wikimedia:

Articles connexes

[modifier|modifier le code]

Liens externes

[modifier|modifier le code]