You are on page 1of 38

http://fr.wikipedia.

org/wiki/Alg%C3%A8bre_de_Boole_(logique)

Algèbre de Boole (logique)


Un article de Wikipédia, l'encyclopédie libre.

Aller à : Navigation, Rechercher


Pour les articles homonymes, voir Algèbre de Boole.

L'algèbre de Boole est la partie des mathématiques, de la logique et de l'électronique qui


s'intéresse aux opérations et aux fonctions sur les variables logiques. Le nom provient de
George Boole, un mathématicien britannique qui, durant le milieu du XIXe siècle, restructura
complètement la logique en un système formel. Plus spécifiquement, l'algèbre booléenne
permet d'utiliser des techniques algébriques pour traiter les expressions à deux valeurs de la
logique des propositions.

Aujourd'hui, l'algèbre de Boole trouve de nombreuses applications en informatique et dans la


conception des circuits électroniques. Elle fut utilisée la première fois pour les circuits de
commutation téléphoniques par Claude Shannon.

L'algèbre de Boole des fonctions logiques permet de modéliser des raisonnements logiques,
en exprimant un « état » en fonction de conditions. Par exemple :

Communication = Émetteur ET Récepteur


Communication est « VRAI » Si Émetteur actif ET Récepteur actif (c'est une fonction
logique dépendant des variables Émetteur et Récepteur)
Décrocher = ( Décision de répondre ET Sonnerie ) OU décision d'appeler
Décrocher est « VRAI » Si on entend la sonnerie ET que l'on décide de répondre OU
si l'on décide d'appeler.

L'algèbre de Boole étant un domaine commun à trois disciplines, on rencontre des notations
différentes pour désigner un même objet. Dans le reste de l'article, on indiquera les diverses
notations, mais on en privilégiera une pour conserver une certaine homogénéité.

Sommaire
[masquer]

• 1 Algèbre de Boole des valeurs de vérité


o 1.1 La loi ET, dite conjonction
o 1.2 La loi OU, dite disjonction ou disjonction inclusive
o 1.3 Le contraire, dite négation
o 1.4 Propriétés
 1.4.1 Associativité
 1.4.2 Commutativité
 1.4.3 Distributivité
 1.4.4 Idempotence
 1.4.5 Élément Neutre
 1.4.6 Absorption
 1.4.7 Simplification
 1.4.8 Redondance
 1.4.9 Complémentarité
 1.4.10 Structure
 1.4.11 Priorité
 1.4.12 Théorème de De Morgan
• 2 Fonctions logiques
o 2.1 Fonctions logiques fondamentales
o 2.2 Fonctions logiques composées
 2.2.1 OU exclusif, dit disjonction exclusive
 2.2.2 Équivalence
 2.2.3 Implication
 2.2.4 Inhibition
o 2.3 Exemple de fonctions logiques à trois ou quatre variables
 2.3.1 Fonction logique à trois variables
 2.3.2 Fonction logique à quatre variables
o 2.4 Minimisation d'une expression
• 3 Arbre d'expression
• 4 Voir aussi

• 5 Lien externe

Algèbre de Boole des valeurs de vérité [modifier]


On appelle B l'ensemble constitué de deux éléments appelés valeurs de vérité {VRAI,
FAUX}. Cet ensemble est aussi noté

• B = {1, 0}
• B= .

On priviligiera dans la suite la notation B = {1, 0}.

Sur cet ensemble on peut définir deux lois (ou opérations ou foncteurs), les lois ET et OU et
une transformation appelée le complémentaire, l'inversion ou le contraire.

La loi ET, dite conjonction [modifier]

Article connexe : Fonction ET.

Elle est définie de la manière suivante : a ET b est VRAI si et seulement si a est VRAI et b est
VRAI. Cette loi est aussi notée



• « & » ou « && » dans quelques langages de programmation (Perl, C, PHP...)
• « AND » dans certains langages de programmation (Ada, Pascal, Python, PHP ...)
• « ∧ » dans quelques notations algébriques, ou en APL
On privilégiera dans la suite la notation

On peut construire la table de cette loi (comme une table d'addition ou de multiplication de
notre enfance) mais on ne la confondra pas avec une table de vérité.

Table de la loi ET
b\a 0 1
0 0 0
1 0 1

La loi OU, dite disjonction ou disjonction inclusive [modifier]

Article connexe : Fonction OU.

Elle est définie de la manière suivante : a OU b est VRAI si et seulement si a est VRAI ou b
est VRAI. (si a est vrai et que b est vrai aussi, alors a OU b est vrai.) Cette loi est aussi notée



• « | » ou « || » dans quelques langages de programmation
• « OR » dans certains langages de programmation
• « ∨ » dans quelques notations algébriques ou en APL.
• « < » très rarement.

On privilégiera dans la suite la notation mais on prendra garde que cette loi n'a pas de
rapport avec l'addition que l'on connaît.

Table de la loi OU
b\a 0 1
0 0 1
1 1 1

Le contraire, dite négation [modifier]

Article connexe : Fonction NON.

Le contraire de "a" est VRAI si et seulement si a est FAUX. Le contraire de a est noté

• non-a


• « ! » dans quelques langages de programmation (C, C++,...)
• « NOT » dans certains langages de programmation (ASM,...)
• « <> » dans certains langages de programmation (Basic,...)
• « ~ » dans quelques notations algébriques ou en APL.

On privilégiera dans la suite la notation .

On obtient alors et
Propriétés [modifier]

Associativité [modifier]

Comme avec les opérations habituelles, certaines parenthèses sont inutiles:


(a + b) + c = a + (b + c) = a + b + c
(a.b).c = a.(b.c) = a.b.c
Commutativité [modifier]

L'ordre est sans importance.


a+b=b+a
a.b = b.a
Distributivité [modifier]

Comme avec les opérations habituelles, il est possible de distribuer :


a.(b + c) = a.b + a.c
Attention : comportement différent par rapport aux opérateurs + et * habituels :
a + (b.c) = (a + b).(a + c)
Idempotence [modifier]

a + a + a + [...] + a = a
a.a.a.[...].a = a
Élément Neutre [modifier]

a+0=a
a.1 = a
Absorption [modifier]

a + a.b = a
a.(a + b) = a
Simplification [modifier]

Redondance [modifier]

Complémentarité [modifier]
(« La lumière est allumée » = « la lumière n'est pas non allumée »)

(« VRAI » SI lumière_allumée OU SI lumière_non_allumée → c'est toujours le cas →


vrai dans tous les cas → toujours VRAI, donc =1)

(« VRAI » SI lumière_allumée ET SI lumière_non_allumée → impossible → faux


dans tous les cas → toujours FAUX donc =0)

Structure [modifier]

On retrouve alors toutes les propriétés qui confèrent à B une structure d'algèbre de Boole

Priorité [modifier]

Pour faciliter leur compréhension, il a été décidé que ces opérations seraient soumises aux
mêmes règles que les opérations « de tous les jours », la fonction ET (multiplication logique)
est ainsi prioritaire par rapport à la fonction OU (somme logique) ; on peut, pour s'aider,
placer des parenthèses dans les opérations.

Exemple :
a = 0;b = 1;c = 1
On cherche a.b + c = ???
D'abord on calcule a.b :
a.b = 0.1
0.1 = 0
Puis, on calcule 0 + c :
0+c=c
c=1
Le résultat final est donc:
a.b + c = 1
Théorème de De Morgan [modifier]

Fonction Table de vérité/Table de fonctionement

a b a+b
0 0 0 1 1 1 1
0 1 1 0 1 0 0
1 0 1 0 0 1 0
1 1 1 0 0 0 0
Dans les deux cas, l'expression ne sera VRAIE que si a et b sont fausses.

Fonction Table de vérité/Table de fonctionement

a b a.b
0 0 0 1 1 1 1
0 1 0 1 1 0 1
1 0 0 1 0 1 1
1 1 1 0 0 0 0
Dans les deux cas, l'expression ne sera FAUSSE que si a et b sont vraies.

Fonctions logiques [modifier]


Mathématiquement, une fonction logique ou opérateur logique est une application de Bn dans
B.

En électronique, une fonction logique est une boîte noire qui reçoit en entrée un certain
nombre de variables logiques et qui rend en sortie une variable logique dépendant des
variables d'entrée. L'article fonction logique précise comment construire les boîtes noires de
quelques fonctions fondamentales.

Une table de vérité permet de préciser l'état de la sortie en fonction des états des entrées.

On démontre que toute fonction logique peut se décrire à l'aide des trois opérations de base.



Fonctions logiques fondamentales [modifier]

Elles sont issues des trois opérations de base et définissent alors

• une fonction de B dans B : le complémentaire ou inversion


• deux fonctions de B2 dans B qui sont la somme (ou OU) et le produit (ou ET)

Table de vérité
de l'inverse
a
0 1
1 0
Table de vérité de la
somme
a b a b
0 0 0
0 1 1
1 0 1
1 1 1
Table de vérité du
produit
a b a b
0 0 0
0 1 0
1 0 0
1 1 1

Fonctions logiques composées [modifier]

Ce sont les fonctions logiques à deux variables. Parmi celles-ci, on en dénombre certaines
suffisamment intéressantes pour qu'on leur donne un nom.

OU exclusif, dit disjonction exclusive [modifier]

Article connexe : OU exclusif.

Le OU étudié jusqu'à présent doit se comprendre de la manière suivante : « l'un ou l'autre ou


les deux ». Il est également appelé « OU inclusif ». Le OU exclusif (ou XOR pour ' eXclusive
OR') s'entend comme : « l'un ou l'autre mais pas les deux ».

Il se compose de la manière suivante :

Table de vérité de
XOR
a b a b
0 0 0
0 1 1
1 0 1
1 1 0

Le « ou exclusif » est parfois noté par le signe arithmétique (différent de), auquel il est
équivalent. Fonctionnellement, on utilise aussi un + entouré: .

Équivalence [modifier]

L'équivalence (notée EQV) est vraie si les deux entrées ont la même valeur et fausse sinon.
Elle est appelée aussi «non-ou exclusif » Elle se compose comme suit :
On peut aussi dire que :

Table de vérité de
EQV
a b a b
0 0 1
0 1 0
1 0 0
1 1 1

Il arrive que l'équivalence soit notée par le signe , bien que ce choix ne soit pas
recommandé compte-tenu des autres sens possibles attachés à ce signe.

Implication [modifier]

L'implication (notée IMP) s'écrit de la manière suivante :

Cette opération n'est pas commutative. a est une condition suffisante pour b, qui, elle, est une
condition nécessaire pour a.

Mais

Illustration : de l'affirmation

"S'il fait beau, j'irai me promener."

on peut conclure

"Si je ne vais pas me promener, il ne fait pas beau."

mais on ne peut pas en déduire

"S'il ne fait pas beau, je ne vais pas me promener."

car on ne sait pas si je n'aime pas me promener aussi sous la pluie.

Table de vérité de IMP


a b a b
0 0 1
0 1 1
1 0 0
1 1 1
Inhibition [modifier]

L'inhibition (notée INH) se compose comme suit :

Cette opération n'est pas commutative.

Table de vérité de INH


a b
0 0 0
0 1 0
1 0 1
1 1 0

Exemple de fonctions logiques à trois ou quatre variables [modifier]

Fonction logique à trois variables [modifier]

Si on reprend l'exemple du téléphone, on se trouve en présence de 3 variables :

• a = "le téléphone sonne"


• b = "on a envie de répondre"
• c = "on a envie d'appeler quelqu'un"

la variable d = "on décroche" est fonction logique des 3 précédentes. On écrira que

d = a.b + c
car on décroche quand ça sonne et qu'on a envie de répondre ou quand on a envie d'appeler
quelqu'un.

La table de vérité de cette fonction d est alors la suivante :

Table de vérité de décrocher


a b c d
0 0 0 0
0 0 1 1
0 1 0 0
0 1 1 1
1 0 0 0
1 0 1 1
1 1 0 1
1 1 1 1

L'observation de la table montre que notre analyse première comportait une situation absurde:
le téléphone sonne, on a envie d'appeler quelqu'un, mais on n'a pas envie de répondre et on
décroche quand même. Cela n'est certainement pas le comportement souhaité, il est donc
préférable de modifier la fonction décrocher de façon à ce qu'on obtienne le tableau suivant:

Table de vérité de décrocher2


a b c d2
0 0 0 0
0 0 1 1
0 1 0 0
0 1 1 1
1 0 0 0
1 0 1 0
1 1 0 1
1 1 1 1

En lisant le procédé de la simplification des expressions ci-dessous, vous verrez que la


formule de décrocher2 correspond à .

Fonction logique à quatre variables [modifier]

Un bon élève s'interroge s'il est sage de sortir un soir. Il doit décider en fonction de quatre
propositions :

• a = il a assez d'argent
• b = il a fini ses devoirs
• c = le transport en commun est en grève
• d = l'auto de son père est disponible

Cet élève pourra sortir si :

• il a assez d'argent, a = vrai


• il a fini ses devoirs, donc b = vrai
• le transport en commun n'est pas en grève, donc c = faux
• ou si l'auto de son père est disponible, donc d = vrai

Donc l'expression logique de sortir en fonction de l'état des variables a, b, c et d ; et elle peut
s'écrire ainsi :

Sortir =

Minimisation d'une expression [modifier]

Une fonction logique peut être déterminée

• soit sous forme d'une expression faisant intervenir les 3 opérations ( , , )


• soit sous forme de sa table de vérité. Dans ce cas il sera toujours possible d'écrire cette
fonction comme une somme de produits.
Exemple: Dans l'exemple de "téléphoner2", on s'aperçoit que le résultat est à 1 quand (a, b, c)
= (0, 0, 1) ou (0, 1, 1) ou (1, 1, 0) ou (1, 1, 1).

Cela permet de définir d2 par

Il est alors intéressant de trouver une expression minimisant le nombre de termes et le nombre
de lettres dans chaque terme. C'est l'objectif de certaines techniques comme la méthode de
Quine-Mc Cluskey, les diagrammes de Karnaugh…

Exemple (suite) : la somme précédente peut être réduite en

par factorisation des deux premiers termes par et factorisation des deux derniers termes
par

Arbre d'expression [modifier]


Les expressions logiques sont souvent représentées en informatique sous forme
d'arborescence. Cette dernière comporte un sommet (la racine en fait) auquel sont rattachés
différents sous arbres (ou branches). Les bifurcations sont des sommets internes. Le nombre
de sous-arbres reliés à un même sommet est appelé arité. Les sommets sans issue sont appelés
feuilles. Chaque sommet interne est identifié par un opérateur booléen alors que les feuilles
représentent les variables qui subissent ces opérations.

Voir aussi [modifier]


Wikibooks propose un ouvrage abordant ce sujet : la logique
combinatoire.

Wikibooks propose un ouvrage abordant ce sujet : la logique séquentielle.

• Fonction logique
• Calcul des propositions
• Système de numération
• Électronique numérique
• Neurone
• George Boole
• Opérations sur les bits
• Le wikilivre architecture des ordinateurs : comment synthétiser des portes logiques par
assemblage de transistors CMOS ?

Opération binaire
en ensemble
numérique fonctionnelle structurelle
ordonné
élémentaire ∘ composition ensemble de parties ensembles arbres
∗ convolution
+ addition vectorielle ∪ réunion × produit cartésien ∨ enracinement
– soustraction \ complémentation ⊔ union disjointe
(.) produit scalaire
× multiplication ∩ intersection ^ puissance variétés connexes
∧ produit
÷ division Δ différence ensembliste
vectoriel
^ puissance symétrique # somme connexe
algébrique groupes
arithmétique [,] crochet de Lie ordre total espaces pointés
{,} crochet de ⊕ somme directe
div quotient Poisson min minimum ∗ produit libre ∨ bouquet
euclidien ∧ produit max maximum ≀ produit en couronne ∧ smash produit
mod reste extérieur ∗ joint
euclidien homologique treillis modules
∧ PGCD
∨ PPCM ∧ borne inférieure ⊗ produit tensoriel
∨ borne supérieure Hom
combinatoire ∪ cup-produit séquentielle homomorphismes
• produit Tor torsion
( ) coefficient d'intersection Ext extensions
binomial + concaténation
A arrangement
logique booléenne
∧ ET ∨ OU ⇔ EQV
⊕ OU exclusif ⇒ IMP (implication)
(conjonction) (disjonction) (coïncidence)

Lien externe [modifier]


• Algèbre de Boole appliquée à l'électronique
• Algèbre de Boole appliquée à l'automatique

• Portail de la logique
• Portail des mathématiques

Récupérée de « http://fr.wikipedia.org/wiki/Alg%C3%A8bre_de_Boole_(logique) »
Catégories : Algèbre | Fonction logique | [+]
Catégorie cachée : Portail:Mathématiques/Articles liés
http://fr.wikipedia.org/wiki/Syst%C3%A8me_binaire

Système binaire
Un article de Wikipédia, l'encyclopédie libre.

Aller à : Navigation, Rechercher


Pour les articles homonymes, voir Binaire.

Le système binaire est un système de numération utilisant la base 2. On nomme couramment


bit (de l'anglais binary digit, soit « chiffre binaire ») les chiffres de la numération binaire.
Ceux ci ne peuvent prendre que deux valeurs, notées par convention 0 et 1. Il est utilisé dans
les codes des ordinateurs

Sommaire
[masquer]

• 1 Conversions
o 1.1 Énumération des premiers nombres
o 1.2 Expression d'un nombre
o 1.3 Du système décimal vers le système binaire
o 1.4 Entre les bases 2, 8 et 16
 1.4.1 Du binaire vers octal ou hexadécimal
 1.4.2 Vers le binaire
o 1.5 Table des valeurs des groupements de chiffres binaires
• 2 Voir aussi

• 3 Liens externes

Conversions [modifier]
Énumération des premiers nombres [modifier]

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 nombre 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;...), par exemple 35 se décompose en :

1 * 25 + 0 * 24 + 0 * 23 + 0 * 22 + 1 * 21 + 1 * 20 = 32 + 2 + 1 = 35
donc le nombre décimal 35 se note 100011 en binaire.

Expression d'un nombre [modifier]

Un nombre décimal à plusieurs chiffres tel que 123 s'exprime ainsi :

1 * 100 + 2 * 10 + 3 * 1 = 1 * 102 + 2 * 101 + 3 * 100


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 * 26 + 1 * 25 + 1 *
24 + 1 * 23 + 0 * 22 + 1 * 21 + 1 * 20
suite de 1010-10100

Du système décimal vers le système binaire [modifier]

Pour développer l'exemple ci-dessus, le nombre 45 853 écrit en base décimale provient de la
somme de nombres ci-après écrits en base décimale. À dire vrai, pour proposer une méthode
plus simple à comprendre, il faut trouver la puissance de 2 la plus grande possible inférieure
ou égale au nombre de départ. On soustrait au nombre d'origine (RO) cette puissance, en
notant un 1, puis l'on cherche à nouveau un multiple (RM) pour le reste (Rr).
• 1. RO= RM1+ Rr1
• 2. Rr1=RM2+Rr2
• 3. Rr2=RM3+Rr3

...

32 768 1 fois 32 768 on fait 2 multiplié 14 fois par lui même soit 215
+ 0 0 fois 16 384 on fait 2 multiplié 13 fois par lui même soit 214
+ 8 192 1 fois 8 192 idem 12 idem 213
+ 4 096 1 fois 4 096 idem 11 idem 212
+ 0 0 fois 2 048 idem 10 idem 211
+ 0 0 fois 1 024 idem 9 idem 210
+ 512 1 fois 512 idem 8 idem 29
+ 256 1 fois 256 idem 7 idem 28
+ 0 0 fois 128 idem 6 idem 27
+ 0 0 fois 64 idem 5 idem 26
+ 0 0 fois 32 idem 4 idem 25
+ 16 1 fois 16 idem 3 idem 24
+ 8 1 fois 8 idem 2 idem 23
+ 4 1 fois 4 idem 1 idem 22
+ 0 0 fois 2 idem 0 idem 21 =
2
+ 1 1 fois 1 20 =
1
=45 853

Soit écrit en système positionnel et en numération décimale (en écrivant les puissances de 2) :

45 853 = 1×215 + 0×214 + 1×213 + 1×212 + 0×211 + 0×210 + 1×29 + 1×28 +


0×27 + 0×26 + 0×25 + 1×24 + 1×23 + 1×22 + 0×21 + 1×20

Soit en système positionnel et en numération binaire puisque l'on ne reporte pas les puissances
de 2

45 853 décimal s'écrit 1011 0011 0001 1101 binaire (séparés par groupes de
4 bits pour aérer la lecture).

Ce nombre nécessite 16 bits pour son écriture (il est compris entre 215 et 216). L'autre méthode
pour convertir un nombre décimal en base 2 est d'utiliser des successions de divisions par le
nombre 2. Ainsi, on a:

45853 / 2 = 22926 reste 1


22926 / 2 = 11463 reste 0
11463 / 2 = 5731 reste 1
5731 / 2 = 2865 reste 1
2865 / 2 = 1432 reste 1
1432 / 2 = 716 reste 0
716 / 2 = 358 reste 0
358 / 2 = 179 reste 0
179 / 2 = 89 reste 1
89 / 2 = 44 reste 1
44 / 2 = 22 reste 0
22 / 2 = 11 reste 0
11 / 2 = 5 reste 1
5 / 2 = 2 reste 1
2 / 2 = 1 reste 0
1 / 2 = 0 reste 1
Soit (en lisant les restes obtenus en sens inverse): 1011001100011101

Entre les bases 2, 8 et 16 [modifier]

Du binaire vers octal ou hexadécimal [modifier]

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 = 23, 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 = 24, 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 [modifier]

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

Table des valeurs des groupements de chiffres binaires [modifier]

Binaire Décimal Octal Hexadécimal Binaire Décimal Octal Hexadécimal

0000 0 0 0 1000 8 10 8

0001 1 1 1 1001 9 11 9

0010 2 2 2 1010 10 12 A
0011 3 3 3 1011 11 13 B

0100 4 4 4 1100 12 14 C

0101 5 5 5 1101 13 15 D

0110 6 6 6 1110 14 16 E

0111 7 7 7 1111 15 17 F

Voir aussi [modifier]


• Format des données
• Arithmétique binaire
• Préfixe binaire
• Virgule flottante
• Système bibi-binaire de Boby Lapointe

Liens externes [modifier]


• Le traitement numérique
• Mise en œuvre de la numération

[ Enrouler ]

v·d·m

Base de numération positionnelle

unaire (1), binaire (2), trinaire (3), quaternaire (4), quinaire


1à9
(5), sénaire (6), octal (8), nonaire (9)

décimal (10), duodécimal (12), hexadécimal (16), vicésimal


10 à 60
(20), sexagésimal (60),

Autre
base d'or (φ),
base

Notions base • chiffre • nombre • notation positionnelle • numération


http://fr.wikipedia.org/wiki/Arithm%C3%A9tique_binaire

Arithmétique binaire
Un article de Wikipédia, l'encyclopédie libre.

Aller à : Navigation, Rechercher

L'arithmétique binaire est la manière dont on mène les calculs en base 2 (système binaire).

C'est un concept essentiel de l'informatique. En effet, les processeurs des ordinateurs sont
composés de millions de transistors (imprimés sur un circuit électronique) qui chacun ne gère
que des bits 0 (« le courant ne passe pas ») et 1 (« le courant passe »).

Un calcul informatique n'est donc qu'une suite d'opérations sur des paquets de 0 et de 1,
appelés octets lorsqu'ils sont regroupés par 8.

Sommaire
[masquer]

• 1 Codage binaire
o 1.1 Numération de position
 1.1.1 Représentation des entiers positifs
 1.1.2 Représentation des entiers négatifs
 1.1.2.1 Complément à un
 1.1.2.2 Complément à deux
o 1.2 La soustraction
o 1.3 Code de Gray ou binaire réfléchi
o 1.4 Décimal codé binaire (« binary coded decimal », ou BCD)
• 2 Applications
o 2.1 Théorie de l'information
o 2.2 Logique
o 2.3 Informatique
• 3 Voir aussi
o 3.1 Articles connexes

o 3.2 Liens externes

Codage binaire [modifier]


Il existe différents systèmes numériques basés sur la représentation binaire.

Numération de position [modifier]

Le codage le plus courant est l'équivalent en base deux de la numération de position que nous
utilisons quotidiennement en base 10.
Représentation des entiers positifs [modifier]

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 59 :

59 = 1×32 + 1×16 + 1×8 + 0×4 + 1×2 + 1×1


59 = 1×25 + 1×24 + 1×2³ + 0×2² + 1×21 + 1×20
59 = 111011 en binaire

Avec N bits, ce système permet de représenter les nombres entre 0 et 2N-1. Il est donc possible
de compter sur ses dix doigts jusqu'à 1023 (210-1) en binaire. Il suffit d'affecter à chaque doigt
une valeur binaire (pouvant être représenté par un doigt plié).

Doigt Main Puis. Valeur en


de 2 numération
décimale
Auriculaire de la main droite levé 2^0 1
Annulaire » 2^1 + 2
Majeur » 2^2 + 4
Index » 2^3 + 8
Pouce » 2^4 + 16
Pouce de la main gauche levé 2^5 + 32
Index » 2^6 + 64
Majeur » 2^7 + 128
Annulaire » 2^8 + 256
Auriculaire » 2^9 + 512
-------
Somme =1 023

(Pour mémoire 2^10 =1 024)

Ceci confirme la formule

2^10-1=1 024-1
=1 023

On remarque qu'avec 10 doigts on peut prendre en compte les 10 premières puissances de 2


s'échelonnant de 2^0 à 2^9 c'est-à-dire la somme des 10 premières puissances de 2].

Représentation des entiers négatifs [modifier]

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é à un 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 [modifier]

Ce codage, fort simple, consiste à inverser la valeur de chaque bit composant une valeur
binaire.

Par exemple, pour obtenir -5 :


0101 valeur décimale 5
1010 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é.

Article détaillé : Complément à un.

Complément à deux [modifier]

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 -5:

0101 codage de 5 en binaire


1010 complément à un
1011 on ajoute 1 : représentation de -5 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 -5 et +7 réalisée en complément à deux sur 4 bits :

-5 1011
+7 0111
__ ____
2 (1) 0010 (on 'ignore' la retenue)

Avec n bits, ce système permet de représenter les nombres entre -2n-1 et 2n-1-1.

Article détaillé : Complément à deux.

La soustraction [modifier]

La soustraction en binaire se déroule de la même manière qu’en décimal.

Principe de base :

0−0=0
0 − 1 = 1 (avec retenue)
1−0=1
1−1=0

Exemple de soustraction :

* * * * (les colonnes avec * contiennent des retenues)


1 1 0 1 1 1 0
− 1 0 1 1 1
----------------
= 1 0 1 0 1 1 1

Code de Gray ou binaire réfléchi [modifier]

Ce codage permet de ne faire changer qu'un seul bit à la fois quand un nombre est augmenté
d'une unité. Le nom du code vient de l'ingénieur américain Frank Gray qui déposa un brevet
sur ce code en 1953. Monsieur Louis Gros publia en 1872 un opuscule où ce code était
présenté pour la première fois en lien avec un casse-tête. Monsieur Gros était clerc de notaire
à Lyon.

codage binaire classique Codage Gray ou binaire réfléchi

0 0000 0 0000

1 0001 1 0001

2 0010 2 0011

3 0011 3 0010

4 0100 4 0110

5 0101 5 0111

6 0110 6 0101

7 0111 7 0100

Pour passer d'une ligne à la suivante, on inverse le bit le plus à droite possible conduisant à un
nombre nouveau.

Le nom de code binaire réfléchi vient d'une méthode de construction plus pratique pour
choisir quel bit inverser quand on passe d'un nombre au suivant:

• On choisit un code de départ: zéro est codé 0 et un est codé 1.


• Puis, à chaque fois qu'on a besoin d'un bit supplémentaire, on symétrise les nombres
déjà obtenus (comme une réflexion dans un miroir).
• Enfin, on rajoute un 0 au début des "anciens" nombres, et un 1 au début des nouveaux
nombres.

Exemple :

0 0 0 .0 0 00 0 .00 0 000
1 1 1 .1 1 01 1 .01 1 001
miroir->------ 2 .11 2 011
2 .1 2 11 3 .10 3 010
3 .0 3 10 -------
4 .10 4 110
5 .11 5 111
6 .01 6 101
7 .00 7 100

Une autre méthode de calcul permettant de passer d'un nombre de Gray au suivant, et qui
présente l'avantage de ne pas nécessiter de connaître l'ensemble des nombres précédents est la
suivante :

• si le nombre de 1 est pair, alors le dernier chiffre doit être inversé


• sinon, il faut repérer le 1 situé le plus à droite et inverser le chiffre situé
immédiatement à gauche de celui-ci.

Ce code est surtout utilisé pour des capteurs de positions, par exemple sur des règles optiques.
En effet, si on utilise le code binaire standard, lors du passage de la position un (01) à deux
(10), permutation simultanée de 2 bits, il y a un risque de passage transitoire par trois (11) ou
zéro (00), ce qu'évite le code de Gray.

On remarquera que le passage du maximum (sept sur 3 bits) à zéro se fait également en ne
modifiant qu'un seul bit. Ceci permet par exemple d'encoder un angle, comme la direction
d'une girouette : 0=Nord, 1=Nord-Est, 2=Est, ... 7=Nord-Ouest. Le passage de Nord-Ouest à
Nord se fait également sans problème en ne changeant qu'un seul bit (voir Roue de codage).

Le décodage des signaux lumineux d'un axe de souris mécanique est un décodage de code de
Gray à 2 bits (décodage différentiel dans ce cas, car ce que l'on veut obtenir n'est pas la valeur
décodée mais les transitions ±1 mod 4 de la valeur décodée).

Le code Gray sert également dans les tables de Karnaugh utilisées lors de la conception de
circuits logiques.

Algorithme de codage d'un nombre n en code gray g :

g = n ^(n >> 1)

Algorithme de décodage rapide pour des mots de 64 bits (pour des mots de 32 bits, remplacer
32 par 16) :

long grayInverse(long n) {
long ish, ans, idiv;
ish = 1;
ans = n;
while(true) {
idiv = ans >> ish;
ans ^= idiv;
if (idiv <= 1 || ish == 32)
return ans;
ish <<= 1; // double le nb de shifts la prochaine fois
}
}

Décimal codé binaire (« binary coded decimal », ou BCD) [modifier]

Ce codage consiste à représenter chacun des chiffres de la numérotation décimale sur 4 bits:

1994 = 0001 1001 1001 0100


1×1000 + 9×100 + 9×10 + 4×1

Il présente l'avantage de simplifier la conversion avec la notation décimale.

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 BCD est un code redondant, en effet certaines
combinaisons ne sont pas utilisées (comme 1111 par exemple).

Cette représentation évite par construction tous les problèmes gênants de cumul d'arrondi qui
interviendraient lors de la manipulation de grands nombres dépassant la taille des circuits en
arithmétique entière et obligent à recourir au flottant. Il est cependant possible de manipuler
des nombres à précision arbitraire en utilisant un codage plus efficace que le BCD.

Il existe des variantes du codage BCD :

• code Aiken où 0, 1, 2, 3, 4 sont codés comme en BCD et 5, 6, 7, 8, 9 sont codés de


1011 à 1111. Il permet d'obtenir le complément à 9 en permutant les 1 et les 0.
• codage binaire excédant 3 qui consiste à représenter le chiffre à coder + 3.

Article détaillé : Binary coded decimal.

Applications [modifier]
Théorie de l'information [modifier]

En théorie de l'information, on peut utiliser le bit comme unité de mesure de l'information. La


théorie elle-même est indifférente à la représentation des grandeurs qu'elle utilise.

Logique [modifier]

La logique classique est une logique bivalente: une proposition est soit vraie, soit fausse. Il est
donc possible de représenter la vérité d'une proposition par 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 des probabilités ne faisant
intervenir que les seules valeurs de vérité 0 et 1. Voir Théorème de Cox-Jaynes.
Informatique [modifier]

Le binaire est utilisé en informatique car il permet de modéliser le fonctionnement des


composants de commutation comme le TTL ou le CMOS. La présence d'un seuil de tension
au bornes des transistors, 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,5V près, et le
chiffre 1 pour signifier sa présence à plus de 0,5V. cette marge de tolérance permet de
pousser les cadences des microprocesseurs à des valeurs atteignant sans problème (hormis
d'échauffement) plusieurs gigahertz. Ne sachant pas techniquement réaliser des composants
électroniques à plus de deux états stables (0 ou plus de 0,5V), on n'utilise que la logique
(bivalente) et donc le système binaire.

En informatique, la représentation binaire permet de clairement manipuler des bits : chaque


chiffre binaire correspond à un bit. La représentation binaire nécessitant l'usage de beaucoup
de chiffres (même pour des nombres assez petits), ce qui entraînerait d'importants problèmes
de lisibilité et donc de risques d'erreur de transcription pour les programmeurs on lui préfère
pour eux une représentation parfois octale ou plus fréquemment hexadécimale. La quasi
totalité des microprocesseurs actuels travaillant avec des mots de 8, 16, 32 ou 64 bits, la
notation hexadécimale permet de manipuler l'information par paquets de 4 bits (contre 3 pour
la notation octale plus populaire du temps des premiers mini-ordinateurs DEC à 12 ou 36
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)

Voir aussi [modifier]


Articles connexes [modifier]

• Algèbre de Boole
• Système binaire
• Calcul en virgule flottante
• Nombre négatif
• Complément à 1
• Complément à 2
• Auguste De Morgan
• Entier en précision multiple
http://fr.wikipedia.org/wiki/Nombre_n%C3%A9gatif

Nombre négatif
Un article de Wikipédia, l'encyclopédie libre.

Aller à : Navigation, Rechercher

Un nombre négatif est un nombre qui est inférieur (inférieur ou égal) à zéro, tel que −3 ou
−π. Ceux-ci comprennent les entiers négatifs, les nombres rationnels négatifs, les nombres
irrationnels négatifs, les nombres réels négatifs. Zéro compte comme un nombre négatif.
Lorsqu'un nombre est négatif et non nul, il est dit strictement négatif (cette terminologie
diffère donc de la terminologie anglo-saxonne, pour laquelle un "positive number" est un
nombre strictement positif, zéro n'étant considéré ni comme un nombre positif, ni comme un
nombre négatif).

Les entiers négatifs peuvent être regardés comme une extension des entiers naturels, telle que
l'équation x − y = z ait une solution significative pour toutes les valeurs de x et y. Les autres
ensembles de nombres peuvent être alors construits, comme des extensions progressivement
plus élaborées ou comme des généralisations à partir des entiers.

Les nombres négatifs sont utiles pour décrire des valeurs sur une échelle qui descend au-
dessous de zéro, telle que la température, et aussi en comptabilité où ils peuvent être utilisés
pour représenter des dettes ou des déficits. En comptabilité, les dettes sont souvent
représentées par des nombres écrits en rouge, ou par un nombre entre parenthèses.

Lorsque nous parlons de nombres positifs ou négatifs, les adjectifs positif et négatif doivent
être pris au sens large, c'est-à-dire que zéro n'est pas exclus et zéro est donc un nombre (le
seul) à la fois positif et négatif. Si nous considérons des nombres positifs ou négatifs mais non
nuls, alors nous devons préciser strictement positifs ou strictement négatifs.

• L'ensemble des entiers relatifs négatifs est habituellement noté ,


• l'ensemble des entiers relatifs strictement négatifs est habituellement noté ,
• l'ensemble des nombres rationnels négatifs est habituellement noté ,
• l'ensemble des nombres rationnels strictement négatifs est habituellement noté ,
• l'ensemble des nombres réels négatifs est habituellement noté ,
• l'ensemble des nombres réels strictement négatifs est habituellement noté ,

Arithmétique impliquant les nombres négatifs [modifier]


Addition et soustraction [modifier]

Ajouter un nombre négatif revient à soustraire le nombre positif correspondant :

5 + (−3) = 5 − 3 = 2
−2 + (−5) = −2 − 5 = −7
Soustraire un nombre positif d'un plus petit nombre positif donne un résultat négatif :

4 − 6 = −2 (si vous avez en poche 4€ et que vous dépensez 6€, alors vous avez une
dette de 2€).

Soustraire un nombre positif d'un nombre négatif donne un résultat négatif :

−3 − 6 = −9 (si vous avez une dette de 3€ et que vous dépensez encore 6€, alors vous
avez une dette de 9 €).

Soustraire un nombre négatif équivaut à ajouter le nombre positif correspondant:

5 − (−2) = 5 + 2 = 7 (si vous disposez d'une valeur nette de 5 € et que vous vous
débarrassez d'une dette de 2€, alors il vous reste une valeur 7 € en poche).

Aussi:

(−8) − (−3) = −5 (si vous avez une dette de 8€ et que vous vous débarrassez d'une
dette de 3€, alors vous aurez encore une dette de 5€).

Multiplication [modifier]

Le produit d'un nombre négatif par un nombre positif donne un résultat négatif: (−2) · 3 = −6.
La raison de cela est que ce produit peut être interprété comme une addition répétée: (−2) · 3
= (−2) + (−2) + (−2) = −6. Nous pouvons l'interpréter autrement, si vous avez une dette de 2€,
et si votre dette est triplée, alors vous terminez avec une dette de 6 €

La multiplication de deux nombres négatifs donne un résultat positif: (−3) · (−4) = 12. Cette
situation ne peut pas être interprétée comme une addition répétée, et l'analogie avec une dette
n'aide pas non plus. La raison essentielle de cette règle est que nous voulons que la
multiplication soit distributive :

(3 + (−3)) · (−4) = 3 · (−4) + (−3) · (−4).

Le membre de gauche de cette relation est égal à 0 · (−4) = 0. Le côté droit est une somme de
−12 + (−3) · (−4); pour que les deux membres soient égaux, nous avons besoin que (−3) · (−4)
= 12.

Notion de nombre
Ensembles usuels Extensions
ℕ ensemble des entiers naturelsℍ algèbre des quaternions
ℤ groupe des entiers relatifs O algèbre des octonions
D ensemble des décimaux S algèbre des sédénions
ℚ corps des rationnels autres hypercomplexes
ℝ corps des réels ℚp corps des p-adiques
ℂ corps des complexes hyperréels et superréels
ordinaux et cardinaux
surréels et pseudoréels
Propriétés particulières
pair ou impair • premier ou composé • carré • parfait
positif ou négatif • dyadique • irrationnel
algébrique ou transcendant • imaginaire pur
nombre de Liouville • normal • univers
constructible • calculable • transfini • infiniment petit
Exemples d'importance historique
π : constante d'Archimède (≈ 3,141592654…)
√2 : racine carrée de deux (≈ 1,414213562…)
φ : nombre d'or (≈ 1,618033989…)
0 : zéro
i : unité imaginaire de carré valant −1
e : constante de Neper (≈ 2,718281828…)
ℵ0 : aleph-zéro premier cardinal infini
autres constantes mathématiques
Notions connexes
chiffre • numération • fraction • opération • calcul • algèbre
arithmétique • suite d'entiers • ∞ infini • chiffre significatif
http://fr.wikipedia.org/wiki/Compl%C3%A9ment_%C3%A0_un

Complément à un
Un article de Wikipédia, l'encyclopédie libre.

Aller à : Navigation, Rechercher

Le complément à un est l'opération qui inverse la valeur de chacun des bits d'un nombre
binaire. Il est la première étape du complément à deux.

Exemple [modifier]

Récupérée de « http://fr.wikipedia.org/wiki/Compl%C3%A9ment_%C3%A0_un »
Catégorie : Arithmétique binaire

http://fr.wikipedia.org/wiki/Compl%C3%A9ment_%C3%A0_deux

Complément à deux
Un article de Wikipédia, l'encyclopédie libre.

Aller à : Navigation, Rechercher

Le complément à deux est une représentation binaire des entiers relatifs qui permet
d'effectuer les opérations arithmétiques usuelles naturellement.

bit de signe
0 1 1 1 1 1 1 1 = 127
0 0 0 0 0 0 1 0 = 2
0 0 0 0 0 0 0 1 = 1
0 0 0 0 0 0 0 0 = 0
1 1 1 1 1 1 1 1 = −1
1 1 1 1 1 1 1 0 = −2
1 0 0 0 0 0 0 1 = −127
1 0 0 0 0 0 0 0 = −128
Entier de 8 bits en complément à deux

Explication [modifier]
La notation est utilisée sur des écritures de nombres de longueur donnée (nombres écrits
couramment sur 8, 16, 32 ou 64 bits). Dans une telle écriture on utilise le bit de poids fort (bit
le plus à gauche) du nombre pour contenir la représentation de son signe (positif ou négatif, le
zéro étant considéré comme positif).

La première idée est de marquer le signe du nombre de façon simple : le signe puis la
représentation de sa valeur absolue. Ainsi :

v
00000010 = +2 en décimal
v
10000010 = (-2) en décimal

Malheureusement cette représentation possède deux inconvénients. Le premier (mineur) est


que le nombre zéro (0) possède deux représentations: 00000000 et 10000000 sont
respectivement égaux à 0 et -0. L'autre inconvénient (majeur) est que cette représentation n'est
pas compatible avec l'addition; l'addition usuelle d'un nombre négatif et d'un nombre positif
ne fonctionne pas. Ainsi:

00000011 + 10000100 = 10000111

Soit 3 + (-4) = (-7) au lieu de (-1)

C'est pour remédier à ces problèmes que l'on utilise la notation en complément à deux. Les
nombres positifs sont représentés comme attendu; par contre les nombres négatifs sont
obtenus de la manière suivante :

• On inverse les bits de l'écriture binaire de sa valeur absolue (opération binaire NOT),
on fait ce qu'on appelle le complément à un,
• On ajoute 1 au résultat (les dépassements sont ignorés).

Cette opération correspond au calcul de 2n-|X|, où n est la longueur de la représentation. Ainsi


-1 s'écrit comme 256-1=255=111111112, pour les nombres sur 8 bits.

Les deux inconvénients précédents disparaissent alors. En effet, l'opération précédente


effectuée sur 00000000 permet d'obtenir 00000000 (-0=+0=0) et l'addition usuelle des
nombres binaires fonctionne.

La même opération effectuée sur un nombre négatif donne le nombre positif de départ: 2n-(2n-
x)=x.

Pour coder (-4) :

• On prend le nombre positif 4 : 00000100


• On inverse les bits : 11111011
• On ajoute 1 : 11111100

Le bit de signe est automatiquement mis à 1 par l'opération d'inversion. On peut vérifier que
cette fois l'opération 3 + (-4) se fait sans erreur :

00000011 + 11111100 = 11111111

Le complément à deux de 11111111 est 00000001 soit 1 en décimal, donc 11111111 = (-1) en
décimal.

Le résultat de l'addition usuelle de nombres représentés en complément à deux est le codage


en complément à deux du résultat de l'addition des nombres. Ainsi les calculs peuvent-ils
s'enchaîner naturellement.

Explications plus détaillées [modifier]


D'un point de vue plus technique, cette écriture est simplement la troncature de l'écriture
infinie à gauche. Pour la base 10, on sait qu'il est sans effet de compléter un nombre par des
zéros à sa gauche, i.e. 123 peut s'écrire 0000123 et même avec une infinité de 0,
comme ...0123. Mais il est bien moins connu que si l'on permet de compléter à gauche avec
une infinité de 9 on obtient une réprésentation des nombres négatifs! Par exemple :

...99 (infinité de 9 à gauche)


+ ...01 (infinité de 0 à gauche)
-------
...00 (infinité de 0 à gauche)

On peut alors interpréter ...99 comme étant -1, puisque -1+1=0.

Cette notation est le complément à 10. Pour obtenir la représentation d'un nombre négatif il
faut complémenter à 9 chaque chiffre puis ajouter 1 au résultat. Ainsi pour obtenir la
représentation de -123 on fait : ...0123 transformé en ...9876 puis en ...9877.

Un exemple plus complet. Essayons de calculer dans une telle représentation 12+(-7) 12
s'écrit ...012, -7 s'écrit (...07 complémenté en ...92 puis additionné de 1 donne ...93) ...93.
Additionnons:

...012
+ ....93
--------
....05

Et chacun sait que 12+(-7)=12-7=5


Une telle écriture mais de taille fixe fonctionne car le chiffre le plus à gauche (le signe 0 pour
le + et 9 pour le -) représente alors simplement l'infinité des chiffres à gauche (l'opération
consistant à allonger à volonté l'écriture du nombre à gauche s'appelle l'extension du signe et
est bien connue des informaticiens).

Le complément à deux est alors la même technique employée avec la base 2.

Voir aussi [modifier]


• Système binaire

Récupérée de « http://fr.wikipedia.org/wiki/Compl%C3%A9ment_%C3%A0_deux »
Catégorie : Arithmétique binaire
http://fr.wikipedia.org/wiki/Virgule_flottante

Virgule flottante
Un article de Wikipédia, l'encyclopédie libre.

Aller à : Navigation, Rechercher

Les nombres à virgule flottante sont les nombres les plus souvent utilisés dans un ordinateur
pour représenter des valeurs non entières. Ce sont des approximations de nombres réels.

Les nombres à virgule flottante possèdent un signe s (dans {-1, 1}), une mantisse m (aussi
appelée significande) et un exposant e. Un tel triplet représente un réel s.m.be où b est la base
de représentation (généralement 2 sur ordinateur, mais aussi 16 sur certaines anciennes
machines, 10 sur de nombreuses calculatrices, ou éventuellement toute autre valeur). En
faisant varier e, on fait « flotter » la virgule décimale. Généralement, m est d'une taille fixée.

Ceci s'oppose à la représentation dite en virgule fixe, où l'exposant e est fixé.

Les différences de représentation interne et de comportement des nombres flottants d'un


ordinateur à un autre obligeaient à reprendre finement les programmes de calcul scientifique
pour les porter d'une machine à une autre jusqu'à ce qu'une norme soit proposée par l'IEEE.

Sommaire
[masquer]

• 1 Mises en œuvre
o 1.1 Norme IEEE 754
o 1.2 Flottants étendus
• 2 Précautions d'emploi

• 3 Liens externes

Mises en œuvre [modifier]


Norme IEEE 754 [modifier]

Article détaillé : IEEE 754.

La norme IEEE 754 (reprise par la norme internationale CEI 60559) spécifie deux formats de
nombres en virgule flottante (et deux formats étendus optionnels) et les opérations associées.
La quasi-totalité des Architectures d'ordinateurs actuelles, y compris IA32, PowerPC, et
AMD64, incluent une implémentation matérielle des calculs sur flottants IEEE, directement
dans le microprocesseur, garantissant une exécution rapide.

Les deux formats fixés par la norme IEEE 754 sont sur 32 bits (« simple précision ») et 64
bits (« double précision »). La répartition des bits est la suivante, où 1 ≤ M < 2 :
Encodage Signe Exposant Mantisse Valeur d'un nombre
Simple précision 32 bits 1 bit 8 bits 23 bits
Double précision 64 bits 1 bit 11 bits 52 bits

Le tableau ci-dessus indique les bits représentés. Le premier bit de la mantisse d'un nombre
normalisé étant toujours 1, il n'est pas représenté dans ces deux formats : on parle de bit
implicite. Pour ces deux formats, les précisions sont donc respectivement de 24 et de 53 bits.

Flottants étendus [modifier]

Certaines implémentations ajoutent un ou plusieurs types de précision supérieure (ainsi, IA32


a un type étendu sur 80 bits). La norme IEEE 754 prévoit des tailles minimales pour ces types
étendus :

Signe Exposant Mantisse


Simple précision étendue 1 bit 11 bits ou plus 32 bits ou plus
Double précision étendue 1 bit 15 bits ou plus 64 bits ou plus

Ces représentations « étendues » n'utilisent pas forcément le bit implicite de la mantisse.

Dans la pratique, seule la double précision étendue est encore utilisée, dans sa forme
minimale (1+15+64 = 80 bits, le fameux type étendu de l'IA32).

Lorsque les flottants IEEE offrent une précision insuffisante, on peut devoir recourir à des
calculs sur des flottants en précision supérieure. Citons notamment la bibliothèque MPFR.

Précautions d'emploi [modifier]


Les calculs en virgule flottante sont pratiques, mais présentent divers désagréments,
notamment :

• leur précision limitée, qui se traduit par des arrondis (dus aux opérations, mais aussi
aux changements de base implicites, si la base est différente de 10) qui peuvent
s'accumuler de façon gênante. Pour cette raison, les travaux de comptabilité ne sont
pas effectués en virgule flottante, car tout doit tomber juste au centième près. En
particulier, la soustraction de deux nombres très proches provoque une grande perte de
précision relative : on parle de « cancellation ».
• une plage d'exposants limitée, pouvant donner lieux à des « overflows » (lorsque le
résultat d'une opération est plus grand que la plus grande valeur représentable) et à des
« underflows » (lorsqu'un résultat est plus petit, en valeur absolue, que le plus petit
flottant normalisé positif), puis à des résultats n'ayant plus aucun sens.

Il est par exemple tentant de réorganiser des expressions en virgule flottante comme on le
ferait d'expressions mathématiques. Cela n'est cependant pas anodin, car les calculs en virgule
flottante, contrairement aux calculs sur les réels, ne sont pas associatifs. Par exemple, dans un
calcul en flottants IEEE double précision, (260+1)-260 ne donne pas 1, mais 0. La raison est que
260+1 n'est pas représentable exactement et est approché par 260.

Une valeur particulière du champ d'exposant est réservée à la représentation de valeurs


spéciales :

• NaN (« not a number »), qui sera par exemple le résultat de la tentative de division
flottante de zéro par zéro, ou de la racine carrée d'un nombre strictement négatif. Les
NaN se propagent : la plupart des opérations faisant intervenir un NaN donnent NaN
(des exceptions sont possibles, comme NaN puissance 0, qui peut donner 1).
• Un infini positif et un infini négatif, qui sont par exemple le résultat d'un « overflow »
en arrondi au plus près.

Une autre valeur du champ d'exposant est réservée aux zéros (signés) et aux dénormalisés.

Liens externes [modifier]


• (fr) Cours sur l'arithmétique flottante
• (en) Page permettant de coder automatiquement un nombre en virgule flottante
• (en) The pitfalls of verifying floating-point computations, par David Monniaux,
également publié dans ACM Transactions on programming languages and systems,
mai 2008: avertissement sur divers comportements non intuitifs des flottants

Récupérée de « http://fr.wikipedia.org/wiki/Virgule_flottante »
Catégorie : Calcul informatique

Complément à 2
Une truc rapide pour trouver le complément à 2 m'a été fourni par l'un
d'entre vous (merci!). Il consiste à repérer le premier 1 à partir de la droite
(ou le dernier 1 à partir de la gauche) et à complémenter tous les bits à
gauche de ce dernier. Les autres bits sont laissés intacts.
Exemple : 0000 1100.
On inverse les 5 bits à gauche du premier 1 à partir de la droite (en
rouge), ce qui donne 1111 0100.
Exemple : 1111 1111
On inverse les 7 bits à gauche du premier 1 de droite, ce qui donne 0000
0001.

Soustraction binaire
Dans la soustraction binaire, on procède comme en décimal. Quand la
quantité à soustraire est supérieure à la quantité dont on soustrait, on
emprunte 1 au voisin de gauche. En binaire, ce 1 ajoute 2 à la quantité
dont on soustrait, tandis qu'en décimal il ajoute 10.
Dans l'exemple suivant, on doit soustraire 0 - 1 pour le bit de droite. On
emprunte 1 au bit de gauche et on a maintenant 10 - 1, i.e. 2 - 1 = 1.
Ensuite on retranche cet emprunt du bit de gauche, et on a 1 - 0 - 1 = 0.

Voici une animation d'une soustraction qui contient tous les cas possibles :

1 1 1 1
1 0 1 0 0 1 1 0

0 0 1 1 1 1 0 0
1 1 1
1 =
2-1 = 1 0 1 0
2–1-1 = 0 1 0 1 0
3–1–1= 1 0 1 0 1 0
2 - 0 - 1= 1 1 0 1 0 1 0
1-0-1= 0 1 1 0 1 0 1 0

Division binaire

La division binaire s'effectue à l'aide de soustractions et de décalages,


comme la division décimale, sauf que les digits du quotient ne peuvent
être que 1 ou 0. Le bit du quotient est 1 si on peut soustraire le diviseur,
sinon il est 0. Voici une animation de la division du nombre 100100001112
par 10112 = 11010012 reste 1002, c'est-à-dire 1159 / 11 = 105, reste 4.

Arithmétique hexadécimale
Pour effectuer les opérations binaires, il est souvent plus rapide et moins
sujet à l'erreur de travailler en hexadécimal.

Addition

Par exemple 11001101110012 + 11000111111001102 devient 19B916 +


C7E616. Cette addition s'effectue comme en décimal, sauf que qu'on
génère une retenue lorsqu'une somme partielle dépasse 16 au lieu de 10 :

Soustraction

La même chose vaut pour la soustraction. Quand le nombre du bas


dépasse celui du haut, on fait un emprunt au chiffre de gauche et on
ajoute 16 au nombre du haut :

Multiplication

La multiplication binaire de nombres assez longs est difficile en raison du


grand nombre de retenues dans la somme finale et on se trompe très
souvent. On peut l'effectuer plus facilement en hexadécimal si on dispose
de la table de multiplication appropriée que vous trouverez ci-dessous.
Par exemple, 1101 0100 11012 x 1010112 devient B4D x 2B . On effectue
comme en décimal les produits partiels qu'on additionne ensuite.

Si on a de la difficulté avec les retenues, on peut effectuer ces sommes


deux par deux :

et finalement :

et
+++++++++

Le calcul binaire

Ces tables et les chiffres 0 et 1 permettent de décomposer les opérations de calcul classique
en une suite d'opérations effectuées au moyen d'opérateurs booléens. C'est le calcul binaire.
0+0=0 , 0+1=1 , 1+1=0 et je retiens 1 etc...

Addition
L'addition se fait avec les mêmes règles qu'en décimale: On
additionne les bits de poids faibles (A droite) lorsque la somme
de deux bits de mêmes poids dépasse la valeur de l'unité la plus
grande (dans le cas du binaire:1) on a des retenues, elles sont
reportées sur le bit de poids plus fort suivant...

La multiplication binaire est Division Soustraction


très simple
règle de calcul

0x0=0
0x1=0
1x0=0
1x1=1