Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
1 Introduction
1.1
1.2
1.3
Dnitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Organisation gnrale d'un ordinateur
. . . . . . . . . . . . . . .
1.2.1
La mmoire . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.2
L'unit centrale . . . . . . . . . . . . . . . . . . . . . . . .
1.2.3
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
10
1.3.1
Programme original
. . . . . . . . . . . . . . . . . . . . .
10
1.3.2
10
1.3.3
Instruction de base . . . . . . . . . . . . . . . . . . . . . .
11
1.3.4
. . . . . . . . . . . . . . . . . . .
11
1.3.5
Traduction du programme . . . . . . . . . . . . . . . . . .
13
1.3.6
L'unit de controle, le PC . . . . . . . . . . . . . . . . . .
13
1.4
15
1.5
Rsum
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
1.6
Exercices
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
18
2.1
18
2.2
18
19
2.3
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3.1
2.3.2
2.3.3
. . . . . . . . . . . . . .
20
2.3.4
21
2.3.5
21
2.3.6
22
. . . . . . . . . . . . . . . . . .
. . . .
. . . . . .
19
20
2.4
2.3.7
. . . . . . . . . . . . . . . . .
23
2.3.8
25
28
2.4.1
28
2.4.2
29
2.4.3
. . . . . . . . . . . . . . . . . . . . . . . .
2.5
Rsum
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
31
2.6
Exercice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
32
2.7
32
2.8
Supplment : la commande
. . . . . . . . . . . . . . . . . . . .
gnome-calculator
. . . . . . . . . .
3 Oprations en binaire
3.1
3.2
Addition en base 2
34
. . . . . . . . . . . . . . . . . . . . . . . . . .
La multiplication en base 2
. . . . . . . . . . . . . . . . . . . . .
35
36
3.2.2
36
3.2.3
3.2.4
Rsum
3.4
Exercices
. . . . . . . . . . . . . .
. . . . . . . .
37
. . . . . . . . . . . . . .
38
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
38
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
38
4.2
34
3.2.1
3.3
4.1
33
40
. . . . . . . . . . . . . .
40
4.1.1
Le bit de signe
. . . . . . . . . . . . . . . . . . . . . . . .
41
4.1.2
La reprsentation en excdent . . . . . . . . . . . . . . . .
41
. . . . . .
42
. . . . . . . . . . . . . .
42
4.2.1
4.2.2
. . . .
43
4.2.3
L'arithmtique en complment 2
. . . . . . . . . . . . .
45
4.2.4
La multiplication . . . . . . . . . . . . . . . . . . . . . . .
46
4.3
Rsum
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
46
4.4
Exercice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
47
Exercices
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
48
49
51
51
6.1.1
6.1.2
. . . . . . . . . . . . . . . . . . . .
52
53
6.2
. . . . . . . . . . . .
53
6.3
54
6.3.1
54
55
6.4.1
. . . . . . . . .
55
6.4.2
55
6.4.3
Flottants ou rels . . . . . . . . . . . . . . . . . . . . . . .
56
La norme IEEE754 . . . . . . . . . . . . . . . . . . . . . . . . . .
56
6.4
6.5
6.5.1
Cas particuliers . . . . . . . . . . . . . . . . . . . . . . . .
57
6.6
Rsum
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
58
6.7
Exercice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
58
6.8
59
61
7.1
61
7.2
Le code ASCII
61
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.2.1
. . . . . . . . . . . . . . . .
61
7.2.2
62
7.3
63
7.4
. . . . . . . . . . . . . . . . .
64
7.5
64
7.6
la commande
7.7
Rsum
7.8
Exercices
7.9
file
. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
67
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
67
68
. . . . . . . .
70
70
70
8 Algbre de Boole
8.1
8.2
66
72
. . . . . . . . . . . . . . . . . . . . . . . .
72
74
. . . . . . . . . . . . . . .
78
78
8.2.2
8.2.3
79
. . . .
85
8.3
Rsum
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
86
8.4
Exercice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
86
Les relais
9.2
Les transistors
9.3
89
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
89
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
91
9.2.1
91
9.2.2
Les transistors N et P
. . . . . . . . . . . . . . . . . . . .
92
9.2.3
L'inverseur CMOS
. . . . . . . . . . . . . . . . . . . . . .
92
9.2.4
Le ET et le OU en CMOS . . . . . . . . . . . . . . . . . .
93
9.2.5
94
Exercices
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
94
95
95
. . . . . . . . . . . .
96
96
. . . . . . . . . . . .
96
. . . . . . . . . . . . . . . . . . . .
97
. . . . . . . . . . . . . . . . . . . . .
99
10.2.3 Le demi-additionneur
10.2.4 L'additionneur 1 bit
. . . . . . . . . . . . . . . . . . . . . . . . 101
. . . . . . . . . . . . . . . . . 103
. . . . . . . . . . . . . . . . . . . . . . . . . . . 106
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
11 Circuits squentiels
11.1 Les boucles d'inverseurs
112
. . . . . . . . . . . . . . . . . . . . . . . 112
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
41
41
5
. . . . . . . 115
bit . . . . . . . . . . . . . . . 116
bit
. . . . . . . . . . . . . . 118
xy
bits . . . . . . . . . . . . . 119
. . . . . . . . . . . . . . . . . . . . . . . . 120
. . . . . . . . . . . . . . . . . 121
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
12 Automates
123
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
13 L'ordinateur en papier
13.1 Anatomie
132
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
. . . . . . . . . . . . . . . . . . . . . . . 135
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
. . . . . . . . . . . . . . 138
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
14 Projet et valuation
143
Chapitre 1
Introduction
Ce support de cours est destin aux tudiants de la premire anne de licence. Son but est de permettre aux tudiants d'acqurir les notions de base
de l'architecture d'un ordinateur, pour lui permettre de matriser la faon dont
les programmes qu'il crit et leurs donnes sont traits par l'ordinateur pour
produire des rsultats.
La premire partie traite en assez grand dtail les codages usuels utiliss pour
reprsenter les donnes, en particulier les nombres et les caractres. Elle contient
galement la description de mthodes qu'on emploie sur ces reprsentations de
nombres pour eectuer les oprations arithmtiques usuelles.
La seconde partie montre comment on peut, aide de la logique et de transistors, raliser des circuits pour eectuer des calculs et mmoriser des valeurs ;
ensuite, en combinant organes de calcul et mmoires, nous montrons la ralisation d'automates.
Finalement, nous prsentons un ordinateur trs lmentaire mais complet et
nous montrons comment crire des programmes pour cette machine.
Dans cette introduction, nous prsentons un exemple de programme qui
eectue un calcul, puis nous fabriquons un ordinateur qui peut excuter ce programme. Le but est de montrer la manire dont les lments s'imbriquent entre
eux avant de rentrer dans les chapitres suivant dans les dtails de la reprsentation des donnes.
1.1
Dnitions
Exercice
1.1 : Trouvez par vous mme et crivez une dnition des mots
Exercice
mots
1.2
les calculs
les units d'entres sorties pour changer des informations avec l'extrieur.
Ces direntes parties sont relies entre elles par un canal de communication
qu'on appelle un
bus.
memoire
E/S
bus
1.2.1 La mmoire
La mmoire peut tre considre comme une srie d'endroits numrots que
sur un code.
reprsenter le caractre
le nombre 32 le caractre
A,
le nombre 33 le caractre
espace.
point d'exclamation !,
manire dont le contenu des mots peut servir reprsenter direntes choses
(des nombres positifs, ngatifs, fractionnels et des caractres).
Il est possible d'eectuer deux oprations sur un mot mmoire : y crire une
valeur et lire ce qu'on y a crit prcdemment.
La mmoire est utilise pour stocker les programmes excuts sur l'ordinateur. Ces programmes sont donc au pralable chargs en mmoire. Les donnes
manipules par le programme sont elles aussi stockes en mmoire. Par consquent chaque instruction du programme et chaque donne est code par un
nombre. Le stockage des programmes en mmoire au mme titre que les donnes est une caractristique essentielle de nos ordinateurs.
E/S
UC
memoire
E/S
11
10
9
unite de calcul
8
7
6
5
4
3
unite de controle
2
1
0
lire/ecrire
bus
Figure 1.2 Structure d'un ordinateur : seconde approche
1.3
d'un nombre
de Newton-Raphson.
dbut
r <- 1
rpter
r <- (r + n / r) / 2
fin
On commence avec une valeur approche de la racine, ici
1,
inversement si
n/r
n/r
et
n/r ;
il va
utilis pour calculer les valeurs d'autres fonctions que la racine carre. La raison
pour laquelle l'algorithme converge eectivement vers la valeur exacte sort du
cadre de ce cours. ).
Considrons que
n = 4.
mesure que
n = 4
r = 1,
(1.1)
r = 2.5,
(1.2)
r = 2.05,
(1.3)
r = 2.0006097560
(1.4)
r = 2.0000000929
(1.5)
...
(1.6)
r,
doute souhaitable que le programme s'arrte au bout d'un certain temps, par
exemple aprs avoir rpt un certain nombre de fois les calculs, ou bien quand
la valeur de
de haut niveau,
destin tre
compris par le programmeur ; il faut le traduire en instructions que l'ordinateur sait excuter. (Le travail de traduction d'un programme en instructions
10
interprteur ou compilateur.)
(1)
(2)
(3)
(4)
(5)
(6)
placer 1 dans r
diviser n par r
ajouter r et le resultat du calcul prcdent
diviser le rsultat du calcul prcdent par 2
placer le rsultat dans r
recommencer avec l'instruction 2
prcdent ,
le rsultat du calcul
gner par leurs adresses, pour contenir les rsultats des calculs intermdiaires.
Soient t1, t2 et t3 trois mots mmoires. Le programme exprim en instructions
lmentaires devient alors :
(a)
(b)
(c)
(d)
(e)
(f)
placer 1 dans r
diviser n par r, placer le rsultat dans t1
additionner r et t1, placer le rsultat dans t2
placer 2 dans t3
diviser t2 par t3, placer le rsultat dans r
recommencer avec l'instruction b
3.
4.
Nous avons donc l une liste d'instructions lmentaires que notre ordinateur
doit savoir excuter pour eectuer les calculs de notre programme.
11
Dans les ordinateurs communs, ces codes sont choisis avec un grand soin pour
utiliser le moins de mmoire possible mais comme nous cherchons d'abord ici
avoir un ordinateur simple, nous allons choisir un code lmentaire : chaque
instruction sera code sur quatre mots mmoire conscutifs ; le premier mot
indique quelle opration doit tre eectue ; les trois mots suivants contiennent
la description des valeurs sur lesquelles l'opration doit tre eectue (on appelle
cela les
oprandes).
Dtaillons le codage de l'instruction additionner le contenu du mot mmoire 2805 et du mot mmoire 9591 et placer le rsultat dans le mot mmoire
2904 : pour le codage de l'opration, on peut choisir n'importe quelle valeur, par
exemple 4. L'instruction apparaitra dans la mmoire comme une suite de quatre
mots qui contiendront les valeurs 4, 2805, 9591, 2904.
Codons l'instruction diviser le contenu d'un mot par celui d'un autre mot,
placer le rsultat dans un troisime mot de la mme manire mais avec un code
opration dirent, par exmple 2. Ainsi les quatre mots 2, 2805, 9591, 2904
la valeur, dans le troisime mot il y aura l'adresse du mot o la placer, le quatrime mot pourra contenir n'importe quoi. Par exemple, la suite de mots 1, 2,
3, 4 placera la valeur 2 dans le mot d'adresse 3.
La dernire instruction dont nous avons besoin est
instruction.
l'adresse de l'instruction avec laquelle recommencer. Les deux mots qui suivent
pourront contenir n'importe quelle valeur sans modier le sens de l'instruction.
La table suivante rsume notre codage des oprations. Les points d'interrogation servent marquer les mots dont la valeur peut changer sans que la
signication de l'instruction soit modie. Insistons encore une fois sur le fait
que ce codage des oprations et de leurs oprandes est
opration
code
3me
4me
mot
mot
mot
adr1
adr1
adr2
adr3
adr1
adr2
adr3
adr1
opration
crire le nombre
crire
adr3
adr3
dans le mot
adr1
la somme
des contenus de
crire
arbitraire.
2me
adr1
et
adr2
le rsultat de la division
des contenus de
adr1
et
adr2
Exercice
adr1
contenu
2997 :
2998 :
2999 :
1000
3000 :
3001 :
3002 :
3003 :
1020
3004 :
signication
; ;Placer
; ;le nombre 1
; ; l'adresse 1000
; ; Placer
; ;le nombre 2
; ; l'adresse 1020
3005 :
3006 :
1020
; ; Diviser
3007 :
1000
3008 :
1010
3009 :
3010 :
1020
3011 :
1010
3012 :
1010
3013 :
3014 :
1010
3015 :
1020
; ;par le nombre 2
3016 :
1000
3017 :
3018 :
3005
3019 :
3020 :
; ; Ajouter
; ;Diviser
Counter
Program
13
2.
3.
et ajouter 1 PC
4.
5.
et ajouter 2 PC
6.
8.
9.
et ajouter
PC
10.
11.
et ajouter
12.
13.
14.
et ajouter
15.
PC
PC
13.
17.
18.
.
.
et placer sa valeur dans PC .
Exercice
Que codent ces valeurs si ce sont des instructions ? Quel sera leur eet ?
adresse
contenu
2000 :
2001 :
2000
2002 :
2001
2003 :
2002
signication
14
1.4
15
Metal, le pont
1.5
Rsum
Notre ordinateur est compos de trois parties : mmoire, processeur, entressorties. Le processeur possde un jeu d'instructions. Une instruction est crite
sous la forme d'une suite de nombres. Tout programme doit tre crit en utilisant
le jeu d'instructions du processeur pour pouvoir tre excut par ce dernier. Le
programme lors de son excution est stock en mmoire et le processeur excute
les instructions les unes aprs les autres.
1.6
Exercices
16
1997 :
1998 :
1999 :
2999
2000 :
3000
2001 :
2002 :
2003 :
3000
2004 :
2004
2005 :
2006 :
2007 :
3001
2008 :
3001
2009 :
2010 :
3000
2011 :
3001
2012 :
3002
2013 :
2014 :
3001
2015 :
2999
2016 :
3000
2017 :
2018 :
3002
2019 :
2999
2020 :
3001
2021 :
2022 :
2009
17
Chapitre 2
La reprsentation des
nombres entiers positifs
2.1
Un nombre
valeur
b : on P
obtient le chire de droite avec une
P
a = r + nb, puisque 0i<n ai bi = a0 + b 1i<n ai bi1
gal au reste r de la division ; on recommence l'opration
2.2
Un nombre est reprsent dans l'ordinateur d'une manire que nous n'avons
en gnral pas besoin de connatre (le plus souvent en binaire).
Pour lire un nombre en base
base
lirnum(base){
res = 0;
pour chaque chiffre (de gauche droite)
18
La fonction
Pour
ecrinum(n, base){
si (n >= base)
ecrinum(n / base)
// division entire
ecrire(code(n % base)) // reste de la division
}
La fonction
2.3
1
3 (il faut une
virgule et un nombre inni de chires 3 pour le reprsenter comme une suite
ne peut pas reprsenter avec une suite (nie) de chires, comme
9+3
144
12 ou des indications
ou
d'oprations.
Il est important pour nous informaticiens de comprendre que nous ne manipulons pas des nombres mais des
L'essentiel est donc de garder l'esprit qu'un nombre est quelque chose de
plus vaste que la manire de le reprsenter et qu'il existe plusieurs reprsentations pour un mme nombre. On trouvera des considrations plus approfondies
sur la nature des nombres dans le numro spcial de la revue
19
La Recherche
d'aot 1999. En rsum, on peut dire que personne ne sait trs bien ce qu'est
un nombre (surtout pas les mathmaticiens).
en base dcimale
en base 10 ou simplement en dcimal), parce qu'ils impliquent une
3 100 + 6 10 + 5.
Cette manire de reprsenter les nombres nous est tellement familire qu'il
faut faire un petit eort de pense pour raliser que nous en connaissons d'autres.
en
chires romains.
quivalent en base 10
10
50
100
500
1000
Les valeurs reprsentes par les chires sont additionner quand il n'y en a
pas de plus grandes droite, soustraire sinon. Ainsi IV reprsente le chire 4
dans la reprsentation dcimale (on retire le 1 reprsent par I au 5 reprsent
par V, alors que VI reprsente 6 (5
+ 1).
20
culs eectuer. Pour cela, je numrote les chires d'un nombre en commenant
par la droite avec 0. Pour un nombre
nommer ses chires
chires, je vais
an1 a1 a0 .
27483,
j'ai
a4 = 2, a3 = 7, a2 = 4, a1 = 8
et
a0 = 3.
3141
10
10/10 = 1.
qu'on a
n1
C'est pareil pour les autres nombres : peu prs n'importe quoi
4 10 + 1 10
chires
= an1 an2 a1 a0
a = an1 a0 =
ai bi
0i<n
C'est pour pouvoir crire cette formule que j'ai choisi de numroter les chires
partir de 0.
Pour simplier les calculs,on peut les regrouper :
( ((an1 10 + an2 ) 10 + ) 10 + a1 ) 10 + a0
21
qu'on peut aussi crire en changeant les parties gauche et droite de chaque
addition
n'y a plus que des multiplications par 10 et des additions, au lieu de multiplications par 10, 100, 1000 etc.
binaire),
bien adapt aux circuits lectroniques avec lesquels on construit les ordinateurs.
Pour viter de manipuler les nombreux chires utiliss dans la reprsentation
octal
binaire, nous utilisons aussi frquemment les bases 8 et 16 (on parle alors d'
et d'
hexadcimal),
et
a = 10,
f = 15.
b.
16d16
xb
est reprsent
ou
5558
ou
36510
1011011012 .
Les considrations de la section prcdente sur les nombres reprsents en notation dcimale fonctionnent aussi pour tous les nombres dans n'importe quelle
base
reprsent avec
chires en base
b.
an1 a1 a0
(2.1)
an1 bn1 + + a1 b1 + a0 b0
(2.2)
(2.3)
a =
(2.4)
0i<n
Les lignes 2.1 et 2.2 sont importantes, parce qu'elles servent de point d'appui
pour trouver les calculs eectuer lors des conversions.
Pour appliquer les formules gnrales sur le nombre (en dcimal habituel)
22
a5
a4
a3
a2
a1
a0
Il n'y a plus qu'a remplacer les valeurs dans la partie droite, en remplissant les
points de suspension
(a5 a4 a3 a2 a1 a0 )b
a5 b5 + a4 b4 + a3 b3 + a2 b2 + a1 b1 + a0 b0
on comprend la
formule
45678 = 4 83 + 5 82 + 6 81 + 7 80
On commence eectuer les calculs :
45678
7 + 8 (6 + 8 (5 + 8 4))
7 + 8 (6 + 8 (5 + 3210 ))
7 + 8 (6 + 8 3710 )
7 + 8 (6 + 29610 )
7 + 8 30210 )
7 + 241610 )
242310
23
Depuis la base 16, le processus est le mme mais il faut en plus convertir
les chires vers la base 10. Un exemple pour reprsenter
f ac16
2.2 :
F AC16
1210 + 400010
401210
F AC16
401210
(31415)6
vers le
dcimal :
(31415)6
(3141)6 6 + 5
((314)6 6 + 1) 6 + 5
((314)6 6 + 1) 6 + 5
(((31)6 6 + 4) 6 + 1) 6 + 5
(((3 6 + 1) 6 + 4) 6 + 1) 6 + 5
(((19)10 6 + 4) 6 + 1) 6 + 5
((118)10 6 + 1) 6 + 5
(709)10 6 + 5
(4259)10
Ici, j'ai montr la construction de la forme de Horner sur les premires lignes.
Tous les calculs peuvent se faire de tte.
Pour un exemple avec une base tonnante, reprsentons
(rien ne nous oblige utiliser une base positive) :
(172)8
2 8 (7 8 1))
24
(172)8
en dcimal
2 8 (7 8))
2 8 (1))
2+8
10
(11011011)2
(11011011)2
en dcimal :
1 + 2(1 + 2 54)
1 + 2(1 + 108)
1 + 2 109
1 + 218
219
vers la base 10
25
euclidienne)
2009
16
40
40
8
251
251 8
24 31
31 8
24 3
7
11
8
3
09
8
1
200910
en
37318 .
pour extraire le chire le plus droite, puis de recommencer avec le rsultat tant
qu'il est plus grand que la base. Cela fait sortir une expression de la forme de
la partie droite de l'galit 2.2.
Sur un exemple : pour reprsenter 68110 en octal, on le divise par 8 : 68110 =
1+88510 . On divise maintenant 8510 par 8 : 8510 = 5+81010 . On recommence
encore une fois avec 1010 = 2 + 8 1. Quand on met tout ensemble :
68110
1 + 8 8510
= 1 + 8 (5 + 8 1010 )
= 1 + 8 (5 + 8 (2 + 8 1))
On a maintenant quelque chose qui est dans le mme format que la partie droite
de 2.2, avec
vaut 1, le chire
le chire
a0
vaut 1. En
consquence
68110 = 12518
Un autre exemple avec
(2009)10
(2009)10
1 + 8 251
1 + 8 (3 + 8 31)
1 + 8 (3 + 8 (7 + 8 3))
37318
On peut voir la srie de divisions sur la gure 2.2 telle qu'on peut les poser sur
sa feuille de brouillon.
Avec une base non standard :
(2003)10
(2003)10
en base 6 ?
5 + 6 33310
5 + 6 (3 + 6 5510 )
5 + 6 (3 + 6 (1 + 6 9))
5 + 6 (3 + 6 (1 + 6 (3 + 6 1)))
26
2003 6
18
333
20
18
23
18
5
333 6
30 55
33
30
3
55 6
54 9
1
9 6
6 1
3
(2003)10
vers
1 6
0 0
1
0 6
0 0
0
(13135)6
(((1 6 + 3) 6 + 1) 6 + 3) 6 + 5
131356
Les divisions que nous avons eectues sont reprsentes sur la gure 2.3. Les
deux dernires divisions de la gure sont inutiles mais elles montrent que
est gal
pas
013135
signicatifs). (L'avant
dernire ligne permet de remettre les chires dans l'ordre dans lequel ils apparaissent dans le nombre.)
Du dcimal vers la base 16, la procdure est la mme mais il faut une tape
supplmentaire pour eectuer la conversion des chires suprieurs 9 (dans cet
exemple,
(13)10 = (d)16 )
(2009)10
200310
9 + 1610 12510
9 + 1610 (d + 1610 7)
(7 (16)10 + d) (16)10 + 9
7d916
200310
en base
8 ?
3 8 (250)
3 8 (6 8 32)
3 8 (6 8 (0 8 (4)))
= 3 8 (6 8 (0 8 (4 8 1)))
= 3 8 (6 8 (0 8 (4 8 1)))
=
140638
Ici j'ai du rchir en faisant les divisions pour obtenir des restes positifs. Par
27
i <- 0
a b faire
ci <- a modulo b
a <- a / b
tant que
i <- i+1
n tant que
ci
<-
2.4
Pour convertir entre les bases 2, 8 et 16, il existe une mthode particulire
rapide et facile. Je la prsente d'une faon concise puis avec quelques dtails.
b0
et
b,
vers la base
de manire que
(an1 a0 )b
b0 = bp
0
bases b et b
si on a
b0 ,
nmodp = 0)
avec
entier le passage de la
ai bi
0i<n
(bi
0i<n/p
api+j b0j )
0j<p
0j<p
b=2
et
b0 = 8
28
ou avec
b=2
et
On obtient ainsi
avec
ci ,
b0 = 1610
la repr-
binaire
000
001
010
011
100
101
110
111
Pour convertir du binaire vers l'octal, on regroupe les chires binaires par
groupes de trois et on remplace chaque groupe par le chire octal quivalent.
Pour la base 16, on procde de la mme manire mais avec des groupes de quatre
chires.
Ainsi, pour convertir
76548
en hexadcimal :
f ac16
c0f f ee16
Pour convertir
c0f f ee16
601777568
L'opration est facile et peu sujette aux erreurs de calcul. Quand on part du
dcimal pour obtenir du binaire, c'est bien plus facile de passer par l'octal que
d'eectuer sans erreur la longue srie de divisions par deux de la mthode de
conversion gnrale.
29
(1999)10 ,
on calculera successivement :
(249)10 8 + 7
((31)10 8 + 1) 8 + 7
((3 8 + 7) 8 + 1) 8 + 7
(3717)8
(7CF )16
(7CF )16
(1999)10
(1999)10
(3717)8
(caf e)16
(1100101011111110)2
(145376)8
((((1 8 + 4) 8 + 5) 8 + 3) 8 + 7) 8 + 6
(((12)10 8 + 5) 8 + 3) 8 + 7) 8 + 6
(((101)10 8 + 3) 8 + 7) 8 + 6
((811)10 8 + 7) 8 + 6
(6489)10 8 + 6
(51966)10
(caf e)16
(145376)8
(51966)10
1510
30
dcimal
octal
hexadcimal
binaire
10
11
100
101
110
111
10
1000
11
1001
10
12
1010
11
13
1011
12
14
1100
13
15
1101
14
16
1110
15
17
1111
16
20
10
10000
1610
20
21
22
23
24
25
26
27
28
29
210
2.5
1
2
4
8
16
32
64
128
256
512
1024
Rsum
Pour convertir d'une base quelconque vers la base 10, crire la formule dveloppe puis eectuer les oprations.
Pour convertir de la base 10 vers une base quelconque, eectuer la srie de
divisions par la base : les restes des divisions donnent les chires du nombre de
la droite vers la gauche.
Entre le binaire et l'octal ou l'hexadcimal, utiliser la mthode rapide.
31
2.6
Exercice
Exercice 2.2 : Dcrire dans le dtail, avec des phrases, la suite d'oprations
qu'il faut eectuer pour additionner deux nombres crits en chires romains
(faute d'avoir tous les lments pour crire un programme).
Exercice 2.4 : crire les nombres 534210 et 400910 sous leur forme de Horner.
indiquant les
tapes intermdiaires.
2.7
32
(=
00000 000002 )
le 1 marqu sur le pouce et le 2 inscrit sur l'index. Avec le majeur gauche
seul (=
00000 00100),
et 7 si on les lve tous les deux. Avec cette mthode, on peut compter jusqu'
1023 sur ces dix doigts.
Une autre forme d'exercice consiste choisir un nombre et chercher les
doigts lever pour le reprsenter. Prenons le nombre
2710
par exemple : si on
lve n'importe quel doigt de la main droite, on obtient une valeur trop grande :
la main droite est donc compltement ferme. Si on lve l'auriculaire gauche, on
a la valeur 16 et il reste 11 reprsenter. En levant aussi l'annulaire, on ajoute
8 et il reste 3 reprsenter. On ne lve donc pas le majeur puisqu'il vaut 4 mais
on lve l'index et le pouce qui valent 2 et 1 : il ne reste plus rien compter. Donc
le nombre
2710
11011
si on
2.8
autre systme de fentrage, par exemple Kde). Cela fait apparatre une fentre
qui ressemble une calculette, qu'on peut utiliser pour eectuer les calculs
usuels.
Dans ce mode, la reprsentation des nombres en binaire est toujours disponible pour les nombres entiers positifs ; leurs valeurs sont toujours aches sous
la forme de 64 bits ; on peut modier ces valeurs en cliquant dessus.
On peut faire des conversions entre binaire, octal, dcimal et hexadcimal
en slectionnant
ou
Hex.
33
Chapitre 3
Oprations en binaire
binary digit. Le terme consacr en franais est celui de e.b., comme dans
lments binaires mais il est peu employ.) Le bit de droite d'un nombre est
appel bit de poids faible, celui de gauche le bit de poids fort.
de
3.1
Addition en base 2
Quelle que soit la base dans laquelle on reprsente des nombres, on peut
continuer poser les oprations comme nous l'avons appris l'cole primaire.
Cel est vrai aussi en base deux. Cependant, il faut changer les tables d'addition
et de multiplication.
ai
bi
ci
10
1+1
est gal
102 ,
34
210
en binaire.
Avec cette table d'addition, on peut oprer une addition avec les rgles
usuelles que nous employons pour la base 10. Par exemple, additionnons
et
3810
2010 .
On commence par les convertir en base 2, en passant par la base 8.
r
1
Finalement, il ne reste plus qu' convertir le rsultat en base dix pour vrier
qu'on n'a pas fait d'erreur de calcul :
ri
ai
bi
ci
10
11
Ceci nous permet d'eectuer des additions plus diciles, par exemple
=1
On obtient bien :
3.2
8510 +
:
1
La multiplication en base 2
Nous commenons par examiner une mthode qui permet, en base 10, d'effectuer des multiplications sans avoir besoin des tables de multiplication. Nous
montrons ensuite comment elle conduit directement une mthode simple et
facile pour eectuer les multiplications en base 2.
35
27 43
connaissons pas les tables de multiplication. Une mthode consiste partir d'une
ligne qui contient 1 et 43, puis d'additionner le contenu de chaque ligne luimme, jusqu' obtenir sur la colonne de gauche quelque chose de plus grand que
le second multiplicande :
1
43
86
172
344
16
688
32
On s'arrte l puisque 32 est plus grand que 27. On remonte ensuite en
marquant les valeurs additionner dans la colonne de gauche pour obtenir 27 ;
on commence avec
mais
Dans le tableau de dpart, on ne conserve que les lignes qui nous servent
obtenir 27 (sur le papier, on barre les autres) ; on fait la somme de la colonne
de droite et on obtient le rsultat recherch :
1
43
2
86
344
16
688
1161
27 43
= (1 + 2 + 8 + 16) 43
= 1 43 + 2 43 + 8 43 + 16 43
= 43 + 86 + 344 + 688
= 1 161
L'intrt de la chose, c'est qu'on a eectu tout le travail seulement avec des
additions.
Il est noter pour la suite que le choix des lignes additionner est d'une
certaine faon une conversion vers la base 2 : on a
2710
=
=
=
(1 + 2 + 8 + 1610 )
(((1 2 + 1) + 0) 2 + 1) 2 + 1
110112
36
b (an a0 )
= b 0in ai b
P
= 0in ai bi+1
= an a0 0
an a0 =
0in
ai bi ,
on a
r <- 0
tant que a est diffrent de 0
si le bit de droite de a vaut 1
r r + b
dcaler a droite
dcaler b gauche
On peut faire tourner ce programme la main, en crivant les valeurs successives des variables ; par exemple, si on reprend les valeurs prcdentes et qu'on
multiplie entre eux 27 et 43 :
a
11011
101011
commentaire
dpart
101011
r + b
01101
1010110
dcaler a et b
00110
10101100
dcaler a et b
00011
101011000
dcaler a et b
00001
1010110000
00000
1010110000
10000001
r + b
on n'ajoute pas b r
111011001
r + b
dcaler a et b
10010001001
r + b
dcaler a et b
37
ai
0
0
1
1
bi
ci
101011
x 11011
---------101011
101011.
000000..
101011...
101011....
---------10010001001
Il est amusant de constater que cette mthode eectue les mmes oprations
que l'algorithme de la section prcdente mais dans un ordre dirent : pour
chaque ligne du rsultat intermdiaire, l'ajout du point correspond au dcalage
gauche, et ici nous faisons toutes les additions la n au lieu de les eectuer
pour chaque rsultat intermdiaire.
3.3
Rsum
3.4
Exercices
et
7310
38
Exercice
3.2 : Multiplier
52810
et
32110
avec
Exercice
52810
et
32110
en
Exercice 3.4 : (comparer avec les deux prcdents) Convertir 52810 et 32110
en binaire, poser et eectuer la multiplication en binaire.
00002
et
11112 .
Supplment
Dans le programme de gnome prsent au chapitre prcdent, on peut eectuer des dcalages avec les boutons tiquets
39
<
( gauche) et
>
( droite).
Chapitre 4
Reprsentation des nombres
signs
Dans la partie prcdente, nous avons examin comment passer de la reprsentation d'un nombre d'une base dans une autre. Nous nous sommes particulirement intresss la reprsentation utilise dans les ordinateurs, la base 2.
Ici, nous allons examiner comment reprsenter les nombres ngatifs dans cette
base.
Dans la plupart des cas, nous allons devoir spcier quel est le nombre de bits
utilis pour reprsenter un nombre. Nous commenons par prsenter brivement
des systmes de reprsentation des nombres avec un signe que nous n'utiliserons
que plus loin, puis nous entrerons dans le dtail de la notation
4.1
en complment
Nous savons que toute information est code dans un ordinateur avec un
1 ou un 0. Aucun autre symbole ne peut tre utilis. Jusqu'alors nous avons
reprsent les nombres en supposant qu'ils taient positifs. Pour les nombres
avec un signe, deux systmes possibles sont la dnition d'un bit de signe et la
notation en excdent, qui sont toutes les deux employes pour la reprsentation
des nombres en virgule ottante, que nous verrons plus loin.
Attention, la reprsentation la plus courante pour les nombres entiers utilise
une autre mthode, le complment deux, qui est prsente dans la section
suivante.
40
b6 b0
et le bit
b7
b7 b0 ,
ngatif.
Ainsi sur 8 bits, on reprsentera
+53
avec
0011 0101
et
Dans les deux cas, les sept bits de poids faibles codent, avec
1000 0000
0000 0000
valeur binaire
valeur dcimale
valeur reprsente
0000 0000
0000 0001
0111 1101
0111 1110
0111 1111
1000 0000
1000 0001
1111 1111
127 + 0 = 127
127 + 1 = 126
127 + 125 = 2
127 + 126 = 1
127 + 127 = 0
127 + 128 = 1
127 + 129 = 2
127 + 255 = 128
1
125
126
127
128
129
255
41
4.2
on peut additionner des nombres en complment deux avec les rgles usuelles
de l'addition, sans se soucier de leur signe : le rsultat de l'addition aura le bon
signe ; d'autre part, chaque nombre qu'on peut reprsenter ne possde qu'une
reprsentation unique.
Il y a deux manires de considrer les nombres en complment 2 : on
peut comprendre sur quelles bases arithmtiques ils sont construits et on peut
maitriser les techniques qui permettent de calculer l'oppos d'un nombre.
Attention, les oprations en complment deux imposent d'eectuer les calculs sur un nombre de bits bien dni.
a0
an1 an2 a0 ,
an2
i
n1>i0 ai 2 ) ;
le bit de poids le plus fort, an1 , indique la partie ngative ; il participe la
n1
valeur du nombre pour an1 2
.
an1 )
de soi qu'un nombre dans lequel il est gal 0 n'a pas de partie ngative : c'est
donc un nombre positif ou nul. Quand ce bit est gal 1, la partie ngative
vaut
2n1
et sera toujours plus grande que la partie positive qui vaut au plus
i
n1
1
0i<n1 2 = 2
calculer la valeur d'un nombre pour savoir s'il est positif ou ngatif : le bit de
gauche joue le rle d'un bit de signe.
bits ?
Ce
sera un nombre dont la partie ngative sera nulle et dont la partie positive sera
la plus grande possible. Il aura donc un bit 0 gauche et tous les autres bits
1 ; par exemple sur 8 bits, ce sera
0111 1111.
Sa valeur sera
2n1 1,
ici
127.
bits ?
Ce
sera un nombre avec une partie ngative dirente de 0 et une partie positive
n 1 bits
2n1 , ici 128.
1000 0000.
Sa valeur sera
0 ; par
42
de la reprsentation en complment 2.
Comment reprsenter 0 ?
Comment reprsenter
cimal
sur
bits ?
On va reprsenter le nombre d-
n 2;
n1
1,
2n1 ;
la
On peut partir des proprits de la reprsentation pour convertir entre la reprsentation en complment 2 et la reprsentation usuelle en dcimal avec signe
mais ce n'est pas pratique du tout. La section suivante contient une mthode
bien plus aise. Voici nammoins deux exemples d'une manire de procder.
Sa valeur en dcimal
Encore une fois, les mthode de conversion de la section suivante sont plus
faciles mettre en oeuvre.
C1 (a).
complment 1
reprsenter les nombres ngatifs mais nous n'en parlerons pas ici.)
Ajouter 1 au complment 1 de la reprsentation d'un nombre permet d'obtenir son
43
8410
en complment
C2 (01 010 100) = C1 (01 010 100) + 1 = 10 101 011 + 1 = 10 101 100
Cette squence d'oprations se pose aisment dans la table suivante :
8410 =
1228 =
8410 =
01 010 100
10 101 011
+1
10 101 100
Complment 1
Complment 2
11 000 011 ?
On calcule le compl-
ment 2.
a
C1 (a)
C2 (a)
11 000 011
00 111 100
+ 1
00 111 101
On convertit le rsultat :
6110 .
44
i 0
Addition
8410 =
2310 = 278 =
61 et de 23.
23 :
reprsentation 2 de
C2 (00 010 111) = C1 (00 010 111) + 1 = 11 101 000 + 1 = 11 101 001
On peut maintenant poser l'addition :
+
=
11 000 011
11 101 001
10 101 100
-61
-23
= -84
84
45
Dbordement de capacit
Quand on additionne deux nombres de mme signe, on peut rencontrer un
dbordement de capacit : le rsultat est trop grand (s'il est positif ) ou trop petit
(s'il est ngatif ) pour tre reprsent avec le nombre de bits dont on dispose.
Les dbordements de capacit sur les additions sont faciles dtecter, puisqu'il s'agit toujours d'ajouter deux nombres de mme signe et d'avoir un rsultat d'un signe dirent. Pourtant, la plupart des environnements actuels ne les
traitent pas. Ceci conduit des situations qui semblent ridicules aux mathmaticiens. Par exemple, si on ajoute 1 au plus grand nombre positif, on obtient le
plus petit nombre ngatif.
Le programme C suivant numre tous les entiers qu'on peut reprsenter :
il dmarrre une boucle avec une variable 1 et lui ajoute 1 jusqu' arriver
0 ! Contrairement ce qu'on pourrait penser, ce programme ne boucle pas
indniment.
int
main(){
int t = 1;
while(t != 0)
t = t + 1;
}
return 0;
4.2.4 La multiplication
La multiplication de nombres en complment 2 peut se faire directement
avec un algorithme dit de
de multiplier des nombres signs entre eux, le plus simple la main est de calculer
le signe qu'aura le rsultat (ngatif si les signes sont dirents, positif s'ils sont
identiques), de multiplier leurs valeurs absolues et de prendre le complment
2 du rsultat s'il doit tre ngatif.
4.3
Rsum
La faon la plus usuelle de reprsenter les nombres ngatifs est la reprsentation en complment deux. Pour trouver la reprsentation en complment
deux d'un nombre, on part de sa reprsentation en binaire, on change la valeur
de chaque bit et on ajoute 1. On peut additionner entre eux ces nombres de la
faon usuelle mais pas les multiplier.
46
4.4
Exercice
E?
Exercice 4.3 : (simple) Un mot de 8 bits contient 10100101. Que reprsentet-il si c'est un nombre positif sur huit bits ? si c'est un nombre avec un bit de
signe ? en excdent 127 ? En complment 2 (sur 8 bits) ?
Exercice
10, du complment 2 ?
Exercice 4.8 : ( faire) tant donn deux nombres reprsents en complment 2, comment peut-on savoir lequel est le plus grand en n'utilisant que
des comparaisons de bits entre eux ? crire un programme pour eectuer cette
comparaison. (Pour esquiver les questions de reprsentation des nombres dans
le langage de programmation utilis, on pourra reprsenter le nombre comme
une liste de chires (en Lisp) ou une chane de caractres (en C) ou un tableau
(en Python) ; si votre maitrise d'un langage de programmation est insusante,
dcrivez l'algorithme avec des phrases.)
Exercice
Supplment
Le programme
Le nombre de bits sur lequel le calcul sera eectu peut tre x 16, 32 ou 64
bits.
47
Chapitre 5
Calculer des ordres de
grandeur entre base 2 et base
10
109
seconde.
Quand on s'intresse aux ordres de grandeur, on peut faire des calculs approchs en se fondant sur le fait que
210 = 1024
103 = 1000.
1018 ,
1018
= (103 )6
= 10006
10246
(210 )6
260
32
en puissance de 10 :
48
232 1.
Pour
232
= 22 230
= 4 (210 )3
= 4 10243
4 10003
4 (103 )3
4 109
8 bits
1024 octets
1 Kilo octet(Ko)
1 Mega octet(Mo)
1024 Ko
1 Giga octet(Go)
1024 Mo
1 Tera octet(To)
1024 Go
1 Peta octet(Po)
1024 To
5.1
23 bits
213 bits
223 bits
233 bits
243 bits
253 bits
Exercices
Exercice
d'anctres est multipli par 2 : on a 2 parents, 4 grand-parents, 8 arrires grandparents etc. En supposant une gnration tous les 25 ans, il y a
40
gnrations
qui nous sparent de nos anctres de l'an 1000. Approximer en base 10 le nombre
d'anctres que nous avons en l'an 1000.
Exercice
avec le nombre d'tres humains vivant en l'an 1000. Trouver une explication.
Exercice 5.5 : Une lgende dit qu'en guise de rcompense, l'inventeur (indien) du jeu d'chec demande un grain de bl sur la premire case de l'chiquier,
deux grains sur la seconde, quatre sur la troisime et ainsi de suite jusqu' la
soixante quatrime. Approximer en base 10 le nombre de grains poser sur la
dernire case. En supposant qu'il faut dix grains de bls pour faire un gramme,
49
10123 .
Exercice
Exercice 5.8 : Mme question pour un giga octets au lieu d'un kilo octets.
Exercice 5.9 : (instructif ) : Considrons le programme de 4.2.3, (a) valuer
l'ordre de grandeur du nombre de tours de boucles qu'il eectue. Considrons
recommencer la boucle)
50
Chapitre 6
Reprsenter les nombres qui
ne sont pas entiers
Dans les chapitres prcdents, nous avons examin comment reprsenter les
nombres entiers, positifs ou ngatifs. Nous examinons ici comment reprsenter
les nombres avec des chires droite de la virgule.
6.1
(0.3)10
(0.11)2 .
En ralit, on a
10n ,
la virgule indique
peut aussi s'crire
1.
franctionnelle quelconque
(0.a1 a2 am )10 =
ai 10i
mi<0
Ceci est vrai dans une base
(0.a1 a2 am )b =
X
mi<0
51
ai bi
an1 a0 .a1 am =
1 en descendant. On
ai bi
mi<n
Pour la reprsentation en base 2, le premier chire droite de la virgule vaut
1/2 = (0.5)10 ,
le second
1/4 = (0.25)10 ,
le troisime
1/8 = (0.125)10
et ainsi de
suite.
(0.3)10
en base 2, les
0.3
2 0.3 = 0.6
2 0.6 = 1.2
2 0.2 = 0.4
2 0.4 = 0.8
2 0.8 = 1.6
reprsentation partielle
reste faire
0. . . .
0.0 . . .
0.01 . . .
0.010 . . .
0.0100 . . .
0.01001 . . .
0.3
0.3 1/4
0.6
qu'on a
1001 sans
0.3 en base 2
= (0.0 1001 1001 1001 . . .)2 .
reprsenter exactement
(0.3)10
0.7
2 0.7 = 1.4
2 0.4 = 0.8
2 0.8 = 1.6
2 0.6 = 1.2
2 0.2 = 0.4
Donc
(0.7)10
reprsentation partielle
reste faire
0. . . .
0.1 . . .
0.10 . . .
0.101 . . .
0.1011 . . .
0.10110 . . .
0.7
0.7 1./2
0.7 1/2 1/8
0.7 1.2 1/8 1/16
2n
aura un
gauche de la virgule si
52
n,
aprs la
est suprieur
1/2
1
2 . On peut prendre ce qui
reste reprsenter et le multiplier par 4 : si on obtient une valeur infrieure
faut placer un
1, alors le second chire droite de la virgule est gal 0, sinon il est gal 1
et ainsi de suite. La multiplication des parties fractionnelles chaque ligne fait
qu'on multiplie ce qui reste reprsenter par 2 sur la premire ligne, par 4 sur
la ligne suivante, par 8 sur la troisime ligne et ainsi de suite.
n = (0.101001)2
on
voit que
= (0.101001)2
= (0.1)2 + (0.001)2 + (0.000001)2
= 21 + 23 + 26
= 1/2 + 1/8 + 1/64
= (0.5)10 + (0.125)10 + (0.015625)10
= (0.640625)10
Cette mthode prsente l'inconvnient qu'on est oblig de faire des divisions
pour chaque bit 1, puis une addition. Elle n'est recommander que quand le
nombre contient peu de bits 1.
Dans la seconde mthode, on fait la conversion d'un nombre de la base 2
vers la base 10, puis une seule division.
= (0.101001)2
= (101001)2 /6410
= (51)8 /6410
= 4110 /6410
= (0.640625)10
L'unique division est plus complique que dans la premire mthode mais elle
est unique.
6.2
Une faon simple et pratique de reprsenter les nombres avec des parties
fractionnelles consiste choisir, en fonction des nombres que l'on souhaite reprsenter, une position xe pour la virgule.
53
sir de placer la virgule entre le quatrime et le cinquime bit. Les huit bits
L'avantage d'une telle reprsentation est que les additions et les multiplications sont simples. On additionne deux nombres en virgule xe de la mme
manire que deux nombres entiers. Pour la multiplication, on ne conserve que
les bits de gauche de la partie fractionnelle (en utilisant les bits de droite pour
l'arrondi) et les bits de droite de la partie entire (si les bits gauche de la partie
entire ceux qu'on limine contiennent autre chose que 0, c'est qu'on a un
6.3
notation scientique.
Ainsi, les chires signicatifs d'une grandeur (la mantisse) peuvent tre 1245.
1.2345 100
1.2345 101
1.2345 102
1.2345 1010
1.2345 101
1.2345 102
1.2345 1010
1.2345
12.345
123.45
12345000000.
0.12345
0.012345
0.00000000012345
1031
eV plutt que
91187000000000000000000000000000
54
eV.
avec
9.1187
6.4
Pour reprsenter les nombres en virgule ottante d'une manire avec laquelle
les calculs sont aiss, les ordinateurs utilisent une reprsentation quivalente
la notation scientique des calculettes mais fonde la base 2.
Un nombre se reprsente avec un signe
La valeur du nombre est
s,
une mantisse
et un exposant
e.
(1)s m 2e .
1.1012 20
1.1012 21
1.1012 2102
1.1012 21
1.1012 2102
1.1012 210002
1.1012 210002
exposant
dcimal
0
1
2
-1
-2
8
-8
valeur
valeur
binaire
dcimale
1.1012
11.012
110.12
0.11012
0.011012
1101000002
0.000000011012
1.62510
3.2510
6.510
0.812510
0.4062510
41610
0.0063476562510
55
rels
xe de bits attribus l'exposant, il existe des limites au del desquelles les
nombres sont trop petits ou trop grands pour tre reprsents ; avec le nombre
xe de bits attribus la mantisse, il existe une innit de nombres rels voisins
qui auront la mme reprsentation en virgule ottante. (On le voit aisment en
m et en choisissant une
1.a1 am pour cette mantisse. Les nombres dirents 1.a1 am 1,
1.a1 am 01, 1.a1 am 001 etc. ont tous la mme approximation dans
xant un nombre de chires pour la mantisse, disons
valeur
6.5
La norme IEEE754
La norme IEEE 754 est la plus utilise l'heure actuelle pour reprsenter les
nombres en virgule ottante dans les ordinateurs. Elle xe un nombre de bits
pour la reprsentation des nombres sur 32 et 64 bits, elle traite de quelques cas
particuliers et spcie des manires d'arrondir le rsultat des oprations quand
on ne peut pas le reprsenter de manire exacte.
Les caractristiques les plus importantes de la norme IEEE 754 sont
un nombre est cod sur 32 bits (simple prcision), ou 64 bits (double
prcision).
la mantisse appartient l'intervalle [1,0 ; 10,0[ (en binaire).
le seul chire gauche de la virgule tant toujours 1, n'est pas reprsent
(cela signie que 0 sera reprsent comme un cas particulier).
la partie fractionnelle de la mantisse sera reprsente sur 23 bits (simple
prcision) ou 52 bits (double prcision).
l'exposant est cod sur 8 bits en excdent 127 (simple prcision) ou sur
11 bits en excdent 1023 (double prcision).
En simple prcision, le bit de signe est cod par 1 bit, l'exposant sur 8 bits
et la mantisse sur 23 bits. Ainsi par exemple, soit un mot de 32 bits
(1 10000000 01001000000000000000000)
Il se dcoupe en un bit de signe qui vaut 1, les bits de l'exposant qui valent
10000000
01001000000000000000000).
56
(10000000)2 = 12810 ,
128 127 = 1.
01001000000000000000000), donc la valeur de la
(1.01001000000000000000000)2 = (1.01001)2 = 1+9/32 = 1.28125.
1.28125 21 = 2.5625
On peut aussi rsumer cette squence d'oprations avec :
101012 .
On com-
2110 = 258 =
0.78125
2 0.78125 = 1.5625
2 0.56250 = 1.125
2 0.125 = 0.25
2 0.25 = 0.5
2 0.5 = 1.0
On a donc
0. . . .
0.1 . . .
0.11 . . .
0.110 . . .
0.1100 . . .
0.11001 . . .
(21.7812)10 = (10100.11001)2 .
(10101.11001)2
= (10101.11001)2 20
= (1.010111001)2 24
0.
(1.010011001)2 , il faut placer 01011100100000000000000
0 10000011 01011100100000000000000
57
0 127 = 127
et
126 ;
nombres.
Si les bits de l'exposant valent 255 et que la mantisse vaut 0, alors le nombre
reprsente l'inni (+ ou
propag.
6.6
Inf
et
NaN
Rsum
Une reprsentation des nombres rels existe. Elle ne permet pas de reprsenter de faon exacte l'ensemble des rels. Elle donne au pire une reprsentation du
nombre avec une prcision dpendant de la mantisse. Cette approximation, pouvant tre considr comme ngligeable, peut devenir problmatique lors d'oprations arithmtiques ou lors de conversion de type. (Un exemple de conversion
rate : l'chec du premier tir d Ariane 5 a t caus par une erreur du systme
informatique de guidage. Cette erreur est survenue lors d'une conversion de type
qui a caus un dpassement de capacit d'une variable. Parmi les recommandations mises suite cet accident on notera : Identier toutes les hypothses
implicites faites par le code et ses documents de justication sur les paramtres
fournis par l'quipement. Vrier ces hypothses au regard des restrictions d'utilisation de l'quipement. Vrier la plage des valeurs prises dans les logiciels par
l'une quelconque des variables internes ou de communication.)
6.7
Exercice
(0.3)10
58
Exercice
6.2 : Convertir
(1000100100.0010010001)2
rondi).
Exercice 6.6 : Mme question que la prcdente, sur 2n bits de reprsentation avec
bits gauche et
Exercice 6.7 : crire un programme pour multiplier deux nombres reprsents en base 10 et en virgule ottante entre eux. Penser
normaliser
le rsultat
Exercice 6.8 : Dterminer la main quelle est, en base 10, l'ordre de grandeur de la plus grande valeur qu'on peut reprsenter en simple prcision avec la
norme IEEE 754 ? La plus petite strictement positive sans utiliser les nombres
dnormaliss ? Avec les nombres dnormaliss ?
Variante : quelle l'ordre de grandeur des nombres suivants : (a)
2127 (b) 2126 (c) 223 2126 ?
Exercice
(2 223 )
v reprsente en virgule
x+v = x, cause des erreurs d'arrondi. crire un programme
n
pour dterminer cette valeur pour x = 1, x = 2, x = 4. Gnraliser pour x = 2 .
6.9 : Il existe une plus grande valeur
Exercice
ex = 1 + x +
x3
x4
xn
x2
+
+
+ +
2!
3!
4!
n!
6.8
bc
59
disponible, ce qui permet de faire des calculs sur de trs grands nombres. On
peut calculer en virgule xe, en aectant
droite de la virgule. On peut contrler les bases dans lesquelles les nombres
seront lues ou crites avec les variables
ibase
et
obase.
Voici une courte session avec bc, avec des commentaires en italique.
$ bc -q
2 * 3
6
2100
lancement de la commande
entre d'une expression
affichage du rsultat
entre d'une autre expression
affichage du rsultat
1267650600228229401496703205376
21000
entre d'une troisime expression
rsultat sur cinq lignes
10715086071862673209484250490600018105614048117055336074437503883703\
51051124936122493198378815695858127594672917553146825187145285692314\
04359845775746985748039345677748242309854210746050623711418779541821\
53046474983581941267398767559165543946077062914571196477686542167660\
429831652624386837205668069376
1/3
entre d'une expression
0
rsultat : les calculs se font sur des entiers
scale=10
pour avoir 10 chiffres droite de la virgule
1/3
entre de la mme expression
.3333333333
le rsultat avec la partie fractionnelle
obase=2
modification de la base de sortie
4321
entre d'une expression
1000011100001
affichage du rsultat
123.321
entre d'une expression
1111011.0101001000 affichage du rsultat
obase=10
retour la base de sortie originale
ibase=2
modification de la base d'entre
1000011100001
entre d'une expression
4321
affichage du rsultat
D
Contrle D
$
Fin de la session
60
Chapitre 7
Reprsentation des caractres
7.1
Les ordinateurs ne stockent et ne traitent que des nombres mais nous souhaitons aussi stocker des textes, qui se composent de caractres ; pour cette raison,
on utilise une convention dans laquelle chaque caractre est cod par un nombre.
On peut choisir n'importe quel codage pour les caractres mais il est bien sur
indispensable, quand on change de l'information, que l'metteur et le rcepteur
soient d'accord sur le codage employ.
De nombreux codes ont t utiliss ; on n'en rencontre certains que trs
rarement, comme le code Baudot qui tait utilis sur les Telex ou le code
7.2
Le code ASCII
American Standard Code for Information Interchange). Comme il est trs couramment utilis, il joue le rle de lingua franca entre ordinateurs.
(
27 = 128
61
utilise le plus souvent un octet pour contenir un caractre cod en ascii, avec
le huitime bit zro. (Certains systmes de transmission utilisent le huitime
bit pour autre chose, par exemple pour transmettre une somme de contrle qui
permet de dtecter les erreurs de transmission les plus communes. On parle dans
ce cas d'un bit de
parit. )
NUL
DLE
10
20
30
40
50
'
60
70
SOH
DC1
11
21
31
41
51
61
71
STX
DC2
12
22
32
42
52
62
72
ETX
DC3
13
23
33
43
53
63
73
EOT
DC4
14
24
34
44
54
64
74
ENQ
NAK
15
25
35
45
55
65
75
ACK
SYN
16
&
26
36
46
56
66
76
BEL
ETB
17
'
27
37
47
57
67
77
BS
CAN
18
28
38
48
58
68
78
HT
EM
19
29
39
49
59
69
79
LF
SUB
1A
2A
3A
4A
5A
6A
7A
VT
ESC
1B
2B
3B
4B
5B
6B
7B
FF
FS
1C
2C
<
3C
4C
5C
6C
7C
CR
GS
1D
2D
3D
4D
6D
7D
RS
1E
2E
>
3E
4E
5D
SO
5E
6E
7E
SI
US
1F
2F
3F
4F
5F
6F
DEL
7F
Les 33 premiers codes (de 0 32) et le dernier (code 127) codent des choses
qui ne sont pas imprimables mais qui peuvent tre utilises pour contrler les
comportements des priphriques. Par exemple le code
(bel) provoque un
bip sur l'ordinateur qui l'ache. Certains de ces codes controlent la position du
prochain caractre : le code 10 (A16 , lf comme
sur la premire colonne de la ligne. Le code numro 32 (2016 ) est utilis pour le
caractre espace.
Les autres codes sont utiliss pour reprsenter les caractres alphabtiques
usuels (en majuscule et en minuscule), les chires et les symboles de ponctuation
les plus courants.
Le code
sert indiquer que les codes qui suivent ne sont pas du code ascii mais doivent
tre interprts d'une faon spciale qui dpend du contexte.
62
*.)
Surtout, le code ascii, comme son nom l'indique, est un code amricain et ne
permet donc de coder aucun des caractres spciaux qui apparaissent dans les
autres langues europennes comme les caractres accentus ou le double ss de
l'allemand. Pour les langues qui utilisent d'autres alphabets comme le grec, les
langues slaves, l'arabe et le persan, l'hbreu ou de nombreuses langues indiennes,
ou pour les langues orientales (chinois, japonais, coren), qui s'crivent avec des
idogrammes, le code ascii est compltement inadquat.
Il existe de nombreux codes pour pallier aux insusances du code ascii,
si nombreux qu'il est parfois dicile de s'y retrouver ; les plus importants sont
probablement les codes iso8859 et le couple form par Unicode et utf.
7.3
La norme iso8859 exploite le fait que le code ascii n'utilise que sept bits
pour un caractre qui est presque toujours stock sur huit bits, dans un octet ;
ceci permet de coder 128 nouveaux caractres, avec les codes entre 128 et 255,
alors que les codes entre 0 et 127 s'interprtent de la mme faon que dans le
code ascii.
Ceci prsente l'avantage d'une compatibilit ascendante et descendante avec
le code ascii. La compatibilit est
tend lire un texte cod en iso8859 pourra interprter correctement ce texte s'il
est cod en ascii. Elle est aussi
quelque chose cod en ascii reconnaitra dans le texte tous les caractres qui
peuvent tre cods en ascii. (Naturellement, un programme qui attend du code
ascii et qui reoit un texte cod en iso8859 ne pourra pas interprter comme
il convient les codes compris entre 128 et 255 qui n'existent pas dans le code
ascii.)
Comme il existe bien plus de 128 caractres coder en dehors de ceux qui
sont dja prsents dans le code ascii, la norme iso8859 est construite autour
de variantes, qui indiquent de quelle faon les codes entre 128 et 255 doivent
tre interprts ; la variante la plus importante pour nous est nomme iso8859-1
(parfois aussi nomme
iso-latin-1)
63
texte d'une information supplmentaire qui indique quelle variante du code est
utilise ; ceci complique singulirement les choses pour les textes qui doivent
mlanger des caractres de plusieurs variantes, comme un texte en franais qui
contient une citation du grec par exemple. Finalement, les 128 nouveaux codes
sont largement insusants pour les langues idogrammes qui ont besoin de
plusieurs milliers de codes dirents.
7.4
Une faon de rsoudre les problmes des normes comme l'iso8859 consiste
modier le nombre de bits utiliss pour coder un caractre ; c'est ce que fait la
norme Unicode, dans laquelle chaque caractre est reprsent sur 16 bits, ce qui
permet de coder 65536 caractres dirents ; c'est susant pour coder peu prs
toutes les critures connues, condition d'utiliser des codes identiques pour les
idogrammes chinois, corens et japonais qui se dessinent de manire identique,
mme quand leurs signications sont direntes dans ces trois langues.
En utilisant Unicode, on peut mlanger plusieurs alphabets dans un mme
document, sans avoir besoin de changer de systme de codage, ce qui est prcieux. D'ici quelques annes, Unicode (avec utf prsent dans la section suivante) va probablement s'imposer comme le standard de codage de caractres
le plus rpandu.
Le codage Unicode prsente deux inconvnients : les documents sont deux
fois plus gros qu'avec le code ascii et il est incompatible avec l'
ascii.
Le fait que les documents soient deux fois plus volumineux n'est pas un gros
problme ; la capacit des disques et les vitesses de transport de l'information
augmentent susamment vite pour que ce problme puisse tre ignor. En revanche, l'incompatibilit avec le code ascii pose un problme dicile ; il est bien
sr hors de question de modier tous les systmes pour qu'ils utilisent Unicode
et il est hors de question de ne pas laisser les nouveaux systmes qui utilisent
Unicode dialoguer avec les anciens systmes qui utilisent l'ascii ou une de ses
extensions. C'est la raison d'tre de la norme utf que nous prsentons dans la
section suivante.
7.5
Unicode est incompatible avec le code ascii, ce qui est un rel problme. La
Unicode Translation
Format, qui permet de maintenir la compatibilit avec le code ascii.
solution consiste lui associer un autre code, utf comme
En utf, chaque caractre est cod sur un, deux ou trois octets. Tous les
caractres du code ascii sont cods en utf sur un octet
qu'en ascii. En revanche, un octet qui contient une valeur suprieure 127
annonce un caractre sur deux ou trois octets et utf est construit de telle
64
Programme
UTF8
UTF8
Copie
Conversion
Conversion
Unicode
Unicode
Traitement
Figure 7.1 Un programme lit et crit du texte cod en utf mais le convertit
en Unicode quand le texte doit tre modi.
manire que tous ces octets contiennent un code suprieur 127. Ce mcanisme
garantit une compatibilit ascendante et descendante avec l'ascii.
La compatibilit est ascendante, puisqu'un programme qui lit des caractres
cods en utf interprtera correctement un chier ascii (les codes utf entre
0 et 128 codent les mmes caractres que l'ascii). Elle est aussi descendante,
puisqu'un programme qui traite de l'ascii et qui reoit un chier utf interprtera correctement tous les caractres de ce chier qui apparaissent dans le
code ascii (puisque quand un caractre est cod sur plusieurs octets, tous les
octets contiennent des valeurs suprieures 127, qui n'appartiennent pas au
code ascii).
Un algorithme assez simple permet de traduire l'Unicode en utf et inversement.
Les programmes, en gnral, ne peuvent pas utiliser simplement l'utf pour
manipuler du texte, parce que c'est un code de longueur variable. Or un codage
de longueur variable complique srieusement l'criture des programmes : par
exemple, pour trouver le 2843me caractre d'un texte, il est ncessaire d'examiner les 2842 caractres prcdents, qui peuvent occuper un nombre variable
d'octets, an de savoir dans quels octets prcisment le caractre est stock.
Avec un codage de longueur xe, on sait sans examiner les caractres prcdents que le 2843me caractre est stock partir de l'octet numro 2842
la
65
pas le texte peuvent transmettre directement ces donnes ; ceux qui ont des
traitements eectuer sur le texte commencent par le convertir en Unicode,
incompatible avec l'ascii mais de longueur xe, ils traitent les donnes sous
leur forme Unicode, puis ils reconvertissent les donnes en utf au moment de
produire les rsultats.
Dans la bibliothque du langage C, les caractres Unicode sont appels des
wide char et dnis avec le type wchar_t ; les caractres en UTF sont appels des
multi-byte string. La plupart des fonctions qui eectuent des oprations usuelles
ont un quivalent pour les wide chars ; par exemple la fonction strcat dnie
pour les chanes ascii a un quivalent
7.6
wcscat
la commande file
file
en examinant son contenu. On peut l'utiliser pour distinguer entre les chiers
qui contiennent de l'UTF et ceux qui contiennent de l'iso8859. Voici un exemple
comment d'utilisation
$ ls
# Le rpertoire est vide
$ cat > f1.txt
# Fabrication d'un fichier.
Ce texte ne contient pas d'accents
$
# Pour terminer la commande cat,
$
#
j'ai tap sur les touches Controle et D en mme temps.
$ ls
# Le fichier a bien t cr.
f1.txt
$ file f1.txt
# Que contient le fichier ?
f1.txt: ASCII text
$ cat > f2.txt
# Un deuxime fichier.
Avec un caractre accentu.
$
# Ici aussi, contrle-D pour finir
$ file f2.txt
# Que contient le fichier ?
f2.txt: UTF-8 Unicode text
$
# Conversion du contenu du fichier
$ tcs -f utf -t 8859-1 < f2.txt > f3.txt
$ file f3.txt
# Que contient le rsultat ?
f3.txt: ISO-8859 text
$
# Conversion dans l'autre sens.
$ tcs -f 8859-1 -t utf < f3.txt > f4.txt
$ file f4.txt
# Rsultat.
f4.txt: UTF-8 Unicode text
$ cmp f2.txt f4.txt
# Comparaison avec le fichier de dpart :
# Pas de message = ils sont identiques.
# On peut utiliser file avec n'importe quel fichier
$ file .
.: directory
66
$ file /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses share
7.7
Rsum
les informations.
Entre iso8859 et utf8, prfrez utf8.
7.8
Exercices
Exercice
Quels sont les codages que supporte ce programme ? En citer deux qui ont une
compatibilit ascendante avec l'ascii (en dehors de l'utf et de l'iso8859) et un
qui est incompatible. Ne pas oublier de mentionner la manire dont vous avez
dtermin cette compatiblit.
Exercice 7.2 : Sauver un chier, avec des caractres accentus avec les deux
cat, more et
less. Dcrire ce que vous observez. (Facultatif ) S'il y a un problme, provient-il
(Sous emacs, il y a un caractre en bas gauche qui indique avec quel systme
de codage le contenu du chier sera crit. Il y a un 'u' pour Unicode-utf, un 1
pour l'iso8859-1 etc. Avec la commande
Le but de l'exercice est d'avoir des chiers qui contiennent les mmes caractres accentus en iso8859-1 et en utf-8 ; vouz pouvez utiliser un autre outil
qu'emacs si vous le prfrez ; notez cependant qu'Emacs, bien qu'un peu compliqu matriser au dpart, est l'diteur de texte prfr de beaucoup de programmeurs.)
Exercice 7.3 : Dans les chiers html, on peut indiquer le codage de caractre
67
iso8859-1 ?
<html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<body>
Caractres accentus
</body>
</html>
Si le chier s'appelle
toto.html.
toto.html,
firefox
Exercice 7.4 : (assez dicile, pas de corrig) Trouver une squence de carac-
tres accentus du franais qui, encode en iso-8859, donne autre chose qu'une
erreur en utf8.
7.9
Ce chapitre conclue la partie sur direntes manires de reprsenter de l'information avec des bits dans la mmoire de l'ordinateur. Voici un exercice corrig
sur le sujet.
Enonc
et
1000 0000,
0010 1000,
que reprsentent-ils si
68
1 0010 10002 = 00 101 0002 = 0508 = 4010 , 1001 11002 = 10 011 1002 = 2348 =
(2 8 + 3) 8 + 4 = 15610 , 0100 00112 = 01 000 0112 = 1038 = 6710 , 1000 0000 =
27 = 12810 .
2
En supposant que le premier octet contient les poids forts : [Ce n'est pas un
problme si on suppose que c'est le second octet qui contient les poids forts.]
+
=
Sa valeur en dcimal :
Si ce sont des nombres en complment 2 sur 16 bits ils sont positifs tous
les deux puisque leurs bits de signe sont 0 et ils valent (comme au 2)
et
17 28010 .
10 39610
2767610 .
Toujours en supposant que les bits de poids forts sont dans le premier octet,
00 101 000 100 111 000 100 001 110 000 0002 . Le bit 1 le plus
229 = 29 220 soit environ
6
8
512 10 = 5.12 10 . L'ordre de grandeur du nombre est donc de 108 ,
le nombre vaut
fractionnelle de la mantisse :
Le signe contient
L'exposant contient
127 + 73 = 54
100 111 000 100 001 110 000 000,
1.100 111 000 100 001 1102
1101102
La valeur du nombre est donc 1.100 111 000 100 001 1102 102
en binaire.
La partie fractionnelle de la mantisse contient
470416x218 ,
69
man ascii
permet de constater
primables. [Si les conditions d'examen ne prvoient pas une table des caractres
ISO-8859-1, cette dernire partie est facultative.]
En UTF, le premier octet est infrieur 128 et code donc le mme caractre
que l'ASCII ; le second est suprieur ou gal 128 et devrait donc tre le premier
octet d'un caractre sur 2 ou 3 octets mais comme le caractre suivant est
infrieur 128, cela signie qu'il y a une erreur de codage. C'est pareil pour le
troisime et le quatrime (ASCII et erreur).
7.10
Pour taper les caractres qui n'apparaissent pas sur le clavier, il existe une
mthode simple pour les obtenir avec une suite de frappe de touches sous X11,
avec la touche
Compose.
vier mais les systmes de gestion de fentre Gnome et KDE (ou la commande
xmodmap)
Windows.
xev
70
1
<Compose> ' e donne le caractre ''. <Compose> s s donne le ca2
ratre ''. On devine facilement les caractres taper : il s'agit en gnral de
pour ' '.
et
71
Chapitre 8
Algbre de Boole
8.1
Dans cette algbre une variable peut prendre deux valeurs, vrai ou faux
(codes respectivement par
codent les valeurs
et
et
F ).
faux et vrai avec les chires 0 et 1. J'ai fait ici le choix d'utiliser
pour viter la confusion avec les chires utiliss pour reprsenter les
table
de vrit. La table de vrit d'une fonction logique donne la valeur de la fonction
Pour chacune d'elles, nous donnons son criture algbrique ainsi que sa
pour toutes les combinaisons des valeurs des variables. Pour une fonction qui
contient
2n
non : f (x) = x = x =x
x
72
La fonction
La fonction
ou : f (x, y) = x + y = x y = x|y
x
x+y
F
xy
Sur la base de ces trois fonctions, nous pouvons rcrire la fonction du premier exemple et en donner la table de vrit :
f (x, y, z) = x.y + z
x
f (x, y, z)
F
La fonction
x+y
La fonction
x.y
74
faire
7.
f , les colonnes intermdiaires peuvent tre (1) x, (2) y , (3) z , (4) x.y.z ,
x.y.z et (6) x.y.z . La faon qui conduit se tromper le moins consiste
remplir le tableau colonne par colonne. Ainsi pour remplir la colonne x.y.z , on
repre sur la gauche les colonnes x, y et z et sur chaque ligne, on place un
V si les trois colonnes d'origine contiennent V , on place un F sinon. La table
fonction
(5)
devient :
x.y.z
x.y.z
x.y.z
F
F
faire
x.y.z
x.y.z
x.y.z
75
a+b
a+b
a+b+c
a+b+c
V,
rajouter un
terme
qui exprime la valeur des variables sur cette ligne. La fonction sera un OU entre
ces
termes, puisque l'un d'entre eux sera vrai dans chacun des cas o la fonction
a.b.c
a.b.c
76
correspond
a.b.c.
et, ou
et
non,
fonction logique peut s'exprimer par une table de vrit et que nous pouvons
traduire de cette faon n'importe quelle table de vrit en quation base de
Et,
de
Ou
et de
Non.
universels.
Il y a
et
b)
f (a, b) = V
2 variables
3 variables
nb quelconque
x=x
x+F =x
x.F = F
x+V =V
x.V = x
x+y =y+x
x.y = y.x
x + y + z = (x + y) + z = x + (y + z)
x.y.z = (x.y).z = x.(y.x)
x.(y + z) = x.y + x.z
x + (y.z) = (x + y).(x + z)
x + y + ... + z = x.y.....z
x.y.....z = x + y + ... + z
77
commutativit
associativit
distributivit
Thorme de
Morgan
Et et Ou avec l'addition
Ou
est distributif
multiplication.
Une proprit magnique de l'algbre de Boole, qui apparait bien dans cette
table, est que si on change tous les V et les F, tous les ET et les OU, le systme
continue fonctionner de la mme manire.
8.2
Comme nous l'avons vu, il y a plusieurs expressions logiques qui sont toujours
gales entre elles. Quand on ralise un circuit lectronique, il est souhaitable
d'utiliser l'expression la plus simple, puisque c'est celle qui utilisera le moins de
transistors.
Nous montrons brivement dans cette section deux mthodes de simplication. L'une des mthodes est
algbrique
Karnaugh
(prononcer
Karnaugh
comme
carno)
tables de
et de la logique et la multiplication
ou
part.
On peut aussi s'appuyer l'occasion sur le fait que
x+x
vaut
Vrai.
x.x
vaut
x.y
et par
f (x, y, z) = x.(y + z)
En partant d'une expression qui contenait 9 oprateurs logiques, nous avons
russi obtenir une expression quivalente qui n'utilise plus que deux oprateurs
logiques.
Un deuxime exemple :
a.(a + b)
= a.a + a.b
= a + a.b
= a.V + a.b
= a.(V + b)
= a.V
=a
dveloppement
puisque
puisque
x.x = x
x = x.V
a
V +x=V
x.V = x
factorisation par
puisque
puisque
La mise en uvre des simplications algbriques demande une certaine pratique et un peu de air. Il convient de rpter les exercices proposs jusqu' tre
en mesure de les faire sans recourir aux corrigs. La prochaine partie montre
une faon mcanique de simplier certaines expressions logiques.
ax + ax = a.
C'est une
mthode graphique qui consiste placer des termes les uns cot des autres
quand ils n'ont qu'une variable qui change de valeur, de faon mettre en
vidence cette identit.
Deux termes sont dits adjacents si l'tat des variables qui les composent sont
2n
termes en
79
2n
variables qui
b\a
V
F
c\ab
F
V
FF
FV
VV
VF
cd\ab
FF
FV
VV
VF
FF
FV
VV
VF
et
et
b,
d.
Chaque case joue le mme rle qu'une ligne dans une table de vrt : elle
indique une combinaison de la valeur des variables. Par exemple, la case en bas
droite de la dernire table est dans la colonne
V F,
est
vrai et b est faux et sur la ligne V F , donc pour laquelle c est vrai et d est faux.
Elle correspond donc au terme
a.b.c.d.
Les lignes et les colonnes sont places dans un ordre bien prcis, pour que
les termes adjacents soient placs dans des cases connexes : entre deux cases
voisines, il n'y a qu'une seule variable qui change de valeur.
Enn, il faut considrer que la table est situe sur un cylindre : la colonne
la plus droite et la colonne la plus gauche sont voisines. La colonne la plus
gauche reprsente
variable
ligne.
80
f (a, b, c, d)
de vrit suivante :
a
f(a, b, c, d)
F
F
F
F
F
F
F
F
V
V
V
V
V
V
V
V
F
F
F
F
V
V
V
V
F
F
F
F
V
V
V
V
F
F
V
V
F
F
V
V
F
F
V
V
F
F
V
V
F
V
F
V
F
V
F
V
F
V
F
V
F
V
F
V
V
V
F
V
F
F
V
V
V
F
F
V
F
F
V
V
f (a, b, c, d) = a.b.c.d+a.b.c.d+a.b.c.d+a.b.c.d+a.b.c.d+a.b.c.d+a.b.c.d+a.b.c.d+a.b.c.d
L'expression algbrique avant simplication utilise huit
sept
Et.
Ou,
seize
Non
et vingt
cd\ab
FF
FV
VV
VF
FF
V
V
V
FV
VV
V
V
V
V
VF
V
V
Nous pourrions bien sur, partir de cette table traduire chaque case par un
terme qui rende compte de la valeur des quatre variables pour cette case : nous
retomberions alors sur l'quation non simplie dja vue. On peut aussi utiliser
le fait qu'entre des cases voisines, il n'y a qu'une seule variable qui change de
valeur.
81
Groupement
V,
cela
signie qu'elle est vraie, quelle que soit la valeur de la variable qui change de
valeur de vrit entre les deux cases.
Les deux premires cases de la colonne de gauche contiennent toutes les deux
V.
a.b.c.d
a.b.c.d.
pour l'autre. On peut les prendre en compte toutes les deux avec l'expression
a.b.c,
la valeur de
n'est pas utile. Sous une forme algbrique, on peut voir ceci
comme la factorisation :
a.b.c.d + a.b.c.d
= a.b.c.(d + d)
= a.b.c.V
= a.b.c
mais nous n'avons pas eu besoin de deviner le terme par lequel il convenait
de factoriser (ce n'est pas toujours aussi facile que dans cet exemple) : c'est la
disposition des cases dans la table qui nous l'a indiqu.
Regardons maintenant la troisime ligne, dont toutes les cases contiennent
: cela signie qu'on peut couvrir ces quatre cas avec l'expression
ni de
c.d,
sans
b.
Il nous reste trois cas o la fonction est vraie : les deux cas de la ligne du
bas pourraient se traduire par
b.c.d
ces deux cas avec ceux de la ligne prcdente, on voit qu'en ralit la valeur de
est sans importance et qu'on peut couvrir ces quatre cas avec l'expression plus
simple
c.b.
Le fait que les deux cases avec lesquelles nous les avons regroup
V + V = V . D'un
c.d + b.c.d = c.d + b.c.
point de
b.d.
82
Quand on a des cas indirents, on les note avec des points d'interrogation
dans la table de Karnaugh. Quand on procde aux groupements, on peut utiliser
ces cases si cela permet de faire de plus grands groupes avec les les cases qui
contiennent vrai mais on n'est pas oblig de les recouvrir.
Il existe une variante des tables de Karnaugh pour les fonctions 5 ou 6
variables et on peut traduire certaines dispositions de cases par des
Ou exclusif
il vont se traduire par des termes. Plus le rectangle est grand et plus le terme
sera simple. Quant on aura traduit tous les
dit qu'on les a
cd\ab
FF
FV
VV
VF
FF
V
V
V
V
FV
V
V
V
V
VV
V
V
V
V
VF
V
V
V
V
Dans ce cas, quelle que soit la valeur des variables, la fonction vaut vrai. On
peut l'crire
f (a, b, c, d) = V .
42
compltement remplis de
V.
Il se
traduisent par des termes composs d'une seule variable. Par exemple
correspond au terme
correspond au terme
cd\ab
FF
FV
VV
VF
FF
FV
V
V
V
V
VV
V
V
V
V
VF
cd\ab
FF
FV
VV
VF
FF
V
FV
V
VV
V
VF
V
83
cd\ab
FF
FV
VV
VF
on a les
deux
la fonction
FF
V
FV
V
V
V
V
VV
V
V
V
V
VF
V
f (a, b, c, d) = b + d
Pour les termes qu'on a pas encore couverts, on essaye de les placer dans des
rectangles
41
ou des carrs
2 2;
correspond
correspond
correspond
cd\ab
FF
FV
VV
VF
FF
FV
VV
VF
cd\ab
FF
FV
VV
VF
FF
V
V
FV
V
V
VV
VF
cd\ab
FF
FV
VV
VF
FF
FV
VV
VF
V
V
V
V
c.d
a.c.
cd\ab
FF
FV
VV
VF
contient les deux carrs
22
FF
V
V
FV
V
V
V
VV
VF
V
V
a.c + b.d
84
2 3 par une
2 2 qui se recouvrent
cd\ab
FF
FV
VV
VF
contient deux carrs
FF
V
V
FV
V
V
VV
V
V
VF
a.c + b.c.
Pour les
2 1, tou-
un rectangle. Ils vont tre traduits par des termes 3 variables. Ainsi
cd\ab
FF
FV
VV
VF
correspond
VV
VF
FF
FV
VV
VF
FF
FV
VV
f (a, b, c, d) = b.c.d
cd\ab
FF
FV
VV
VF
correspond
FV
f (a, b, c, d) = a.c.d
cd\ab
FF
FV
VV
VF
correspond
FF
VF
Finalement les
variables.
85
8.3
Rsum
Vrai
et
Faux,
de variables boolennes. Ces expressions peuvent se manipuler sous forme algbrique ou sous forme de tables de vrit. Pour chaque fonction logique, on peut
construire un circuit lectronique quivalent.
On peut simplier les expressions logiques avec des manipulations algbriques ou des tables de Karnaugh.
8.4
Exercice
algbriques.
Exercice
fonction
et de
Exercice
Non-Et
a.b.c = a.b.c
Exercice 8.6 : ( faire) On montre que toutes les fonctions logiques peuvent
Non-Et
Non-Et :
86
x
a.b
a+b
= x.x
= a.b.a.b
= a.a.b.b
Exercice
Non-Ou.
Exercice
8.8 : En fait, une seule quation aurait su dans l'exercice pr-
Non-Ou. Laquelle ?
Non-Et
en utilisant seulement
Exercice 8.9 : Imaginons que pour notre langage, nous utilisions l'algbre de
Boole. Que repondrait alors la sage femme lorsque le nouveau pre lui demande :
Alors, c'est un garon
Exercice 8.10 : Dans quel cas la rponse de l'inrmire serait elle dirente
si le pre lui demandait :C'est un garon
Exercice
Forme simple
(a)
p.q + r.s
b.c
a.(b + c)
b.c + d
(a + b).(a + b)
(x.y + z).(x + y).z
(g) a + a.b.c + a.b.c + a.b + a.d + a.d
(h) (p.q + p.r)
b
(x + y).z
a+b
p.q + p.r + q.r
(e)
(f )
(i)
Exercice
(p + q.((r + s)))
p.(q + r + s)
cd\ab
FF
FV
VV
VF
FF
V
V
V
V
FV
V
VV
V
(b)
87
VF
V
V
V
V
cd\ab
FF
FV
VV
VF
FF
cd\ab
FF
FV
VV
VF
FF
cd\ab
FF
FV
VV
VF
FF
V
FV
V
VV
V
V
V
VF
V
V
FV
V
V
V
V
VV
V
V
V
V
VF
FV
VV
VF
V
V
V
V
V
(c)
V
V
(d)
V
V
88
Chapitre 9
Des dispositifs pour calculer
controler un signal.
9.1
Les relais
plement un l qui entoure un coeur mtallique ; quand il n'y a pas de courant qui
passe dans le l, le coeur mtallique n'est pas magntique ; en revanche, quand
il y a du courant qui traverse le l, le coeur mtallique se comporte comme un
aimant. L'lectro-aimant est utilis pour dplacer une lame mtallique mobile de
manire controler le passage du courant dans un autre circuit, comme suggr
dans les schmas de la gure 9.1.
Avec des relais, on peut construire des circuits qui eectuent les calculs de la
logique boolenne, si on utilise la circulation du courant pour encoder les valeurs
vrai et faux ; ainsi le circuit de la gure 9.1 se comporte comme un Non : s'il y a
du courant entre
en a pas entre
et
b,
et
b,
et
Faux
x1
et
ni entre
b1
entre
qui calcule
Vrai
Les relais ont t utiliss pour construire des calculateurs entre 1920 et 1940
89
Y)
a et b,
X ) et le
et
b,
X
x1
x2
a1
a2
b1
b2
a1
et
a2
ou entre
b1
et
b2
(ou
x1
et
x2 .
90
Grille
Conducteur
Silicium semiconducteur
Conducteur
mais des considrations lectriques et mcaniques limitent la vitesse de commutation entre les deux positions du relais (il faut un temps de l'ordre du dixime
ou du centime de seconde pour dplacer le bras mobile) ce qui ne permet pas de
calculer trs vite. On les utilise encore, notamment pour controler, partir d'un
circuit qui utilise des tensions basses (comme une unit de calcul), des circuits
qui utilisent des tensions plus fortes (comme un moteur).
A partir des annes 1940, on s'est mis utiliser pour la mme fonction des
lampes lectroniques qui jouent le mme rle que les relais mais n'ont pas de
partie mcanique et commutent beaucoup plus rapidement. Elles se composent
d'un lament qui met des lectrons (c'est la
(le
drain) ;
tension, elle cre un champs lectrique qui bloque le passage des lectrons entre
la source et le drain ; la grille joue ici le mme rle que l'lectro-aimant du relai.
Les inconvnients principaux des lampes, c'est qu'elles sont grosses, qu'elles
consomment beaucoup de courant et surtout qu'elles tombent en panne, comme
les lampes que nous utilisons pour nous clairer ; partir de la dcouverte du
transistor au milieu des annes 1950, on les a utilis la place des lampes.
9.2
Les transistors
Nous ne prsentons ici que les transistors qu'on trouve dans les circuits VLSI
et nous nous limitons la variante CMOS.
semi-conducteur
lant ou conducteur suivant qu'on lui applique ou pas une tension. Le principal
transistor utilis dans les ordinateurs est le transistor
MOSFET,
fond sur du
silicium.
On voit sur la gure 9.3 une vision schmatique de la structure d'un transistor : le courant pourra circuler ou pas entre
et
si le silicium semi-conducteur
est dans l'tat conducteur ou pas ; ce sera le cas selon qu'il y aura une tension
ou pas entre
et
sous le contrle de
interrupteur reliant
91
passant.
( gauche) et
( droite).
Vcc
Vdd
Figure 9.5 Un inverseur CMOS
et
(comme
Ngatif
et
Positif)
qui se
tension. On les reprsente couramment par les deux symboles de la gure 9.4.
Avec ces transistors
et
P,
VCC
et
VDD
pour coder
les deux valeurs de la logique boolenne. Les autres niveaux de tensions sont
indtermins ; ils ne codent rien et on conoit les circuits de manire qu'ils ne
puissent pas apparatre. On parle alors d'lectronique
numrique ou digitale.
Faux.
VCC
pour reprsenter
Vrai et VDD
non avec
92
a,
le transistor
VCC .
a est VCC , le transistor du haut est bloquant, celui du bas
que f est connect VDD .
Vcc
a
f
Vdd
Figure 9.6 Un montage viter en CMOS.
Vdd
Vdd
b
b
a ET b
a OU b
Vcc
Vcc
Figure 9.7 Un
En pratique,
VCC
et et un ou raliss en CMOS.
VDD
raison, on vite de monter des circuits comme celui de la gure 9.6 : quand il y a
une tension en
est relie
VCC
et
a,
VDD
Vdd
et le signal
le transistor est
et le circuit fond
(comme, dans une installation lectrique classique, quand on fait se toucher les
deux ls d'une prise lectrique).
9.2.4 Le ET et le OU en CMOS
Les fonctions
des transistors N et P comme dans la gure 9.7. Vous pouvez vrier que les
circuits ont t conus avec soin pour que la sortie soit connecte soit
soit
VCC
VDD ,
et
b,
VCC
et
VDD .
Si
93
dies
sont xs des pattes et le tout est coul dans un boitier en plastique.
Les techniques de fabrication actuelles permettent de placer quelques millions de transistors dans un circuit intgr : on parle de circuits vlsi comme
9.3
Exercices
Vrai
Faux
Exercice 9.2 : Comment construire avec des relais un circuit qui calcule un
OU ?
Non-Ou
Exercice 9.5 : Concevoir un circuit qui n'utilise que 4 transistors pour calculer la fonction
Exercice
Vrai ?
VCC
94
Faux
et
VDD
la valeur
Chapitre 10
Portes logiques et circuits
combinatoires
combinatoires,
donn ne dpend que des entres. On utilise ces circuits notamment pour faire
des calculs mais on ne peut pas les utiliser pour fabriquer des mmoires.
10.1
On utilise les fonctions logiques pour coder les chires 0 et 1 que manipulent
nos ordinateurs. Ceci va nous permettre de concevoir des circuits pour eectuer
des calculs.
Notons qu'il existe plusieurs niveaux de codages dirents : la base, il y a
des transistors qui sont passant ou bloquant suivant des niveaux de tensions
et
VDD ;
Vrai
et
VCC
Faux
deux codages distincts sont possibles. De mme, dans les circuits on peut utiliser
les valeurs logiques
On suppose souvent, comme nous le ferons ici que l'absence de tension est
utilise pour reprsenter le
0.
Faux
le chire
1.
VCC
occasions.
95
NON
OU
ET
10.2
Nous allons montrer les tapes de la conception d'un circuit destin eectuer des additions.
Non se dessine
avec un petit rond blanc ; le triangle qui le prcde rappelle que l'inverseur
amplie galement le signal. Le
mais nous pouvons utiliser les variantes avec un plus grand nombre d'entres.
96
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
Figure 10.2 Le circuit quivalent la fonction
10.2.3 Le demi-additionneur
Le circuit de la gure 10.3, reprsente ce qu'on appelle un
il possde deux entres,
et
demi-additionneur :
nombres reprsents par ces deux chires. Rappelons la table de l'addition dans
la base 2 :
a
a + b
10
Un problme, simple rsoudre, vient de la dernire ligne dans cette table d'addition : il faut deux chires pour reprsenter la sortie de notre demi-additionneur :
l'un sera le chire de droite, que nous noterons
noterons
r.
a+b
10
r = a.b
et que
s = a.b + a.b.
97
a
a.b
1
0
a.b+a.b
1
0
a.b
b
1
0
1
0
0
1
1
0
a.b
retenue
1/2 add
+
r
demi-additionneur,
additions.
98
1/2 add r
s
r out
1/2 add r
s
s=a+b+r
add
additionneur complet,
binaires un chire.
Une fois le circuit construit, nous pouvons le considrer comme une brique
supplmentaire qu'on peut r-utiliser dans des constructions plus complexes.
Dsormais, nous reprsenterons le demi-additionneur comme indiqu en bas de
la gure : un rectangle qui porte l'tiquette
1/2 add,
a+b+c
10
10
10
11
Une faon simple de construire un tel circuit consiste utiliser deux demiadditionneurs (d'o leur nom). Si le premier demi-additionneur produit une
99
0
+
s0
add
a0
r
b0
s1
add
a1
r
b1
s2
add
a2
r
b2
s3
s4
add
a3
b3
Ou entre les deux retenues qui sortent des deux demi-additionneurs pour
complet que nous pouvons dsormais utiliser comme brique dans la construction
de circuits plus complexes.
a3 a2 a1 a0
et
b3 b2 b1 b0
s4 s3 s2 s1 s0 .
Pour construire ce circuit, nous nous sommes contents de connecter la retenue de l'additionneur de chaque paire de chires l'entre de l'additionneur
suivant. Nous allons maintenant utiliser ce circuit comme une nouvelle brique
100
add.
Sur le mme modle, on peut faire des additionneurs pour des nombres sur
n'importe quel nombre de chires binaires : il sut de multiplier le nombre
d'additionneurs 1 bit.
Il existe d'autres circuits plus rapides pour faire des additions mais celui-ci
prsente l'avantage de la simplicit.
Vous vous demandez pourquoi nous avons utilis, pour additionner les bits
a0
et
b0
10.3
Le soustracteur 4 bits
Comment faire un circuit soustracteur ? Puisque nos nombres sont reprsents en complment deux, il sut de calculer le complment deux du nombre
soustraire puis d'utiliser un additionneur pour eectuer le calcul.
Pour calculer le complment 2, rappelons qu'on remplace chaque
et rciproquement, puis qu'on ajoute
1.
par
la retenue peut se propager dans tout le nombre et il faudrait donc une seconde ligne (qui pourrait se faire avec des demi-additionneurs seulement) pour
propager cette retenue.
c1 (x) le complment
c1 (x) + 1. Donc, on a :
x,
1 d'un
a b = a + (c1 (b) + 1)
Or l'addition est associative, donc on peut aussi crire
a b = a + c1 (b) + 1
Dans l'additionneur 4 bits que nous venons de construire, nous avons inject
comme une des trois entres de l'additionneur complet pour les bits de poids
faible. Nous pouvons aussi y injecter
traction.
Cela nous permet de raliser un circuit soustracteur sur le mme modle que
l'additionneur : il sut d'inverser chacun des bits du nombre soustraire et de
placer un
que nous faisons dans la gure 10.6. Cette gure est comparer avec la gure
10.5.
101
1
+
a0
s0
add
r
b0
s1
+
a1
add
r
b1
s2
+
a2
add
r
b2
a3
s3
s4
add
b3
Figure 10.6 Un circuit
ajoutant
b,
soustracteur
et en
b.
102
1
0
0
1
11
00
xc + xc
contr
in
Figure 10.7 Un circuit
out
inv?
valeur de
c.
10.4
L'additionneursoustracteur 4 bits
inverseur conditionnel.
x.
x;
: quand
vaudra 1, la
Nous prsentons ce circuit sur la gure 10.7. Comme d'habitude, nous avons
plac en bas un schma qui va nous permettre de rutliser ce circuit dans avoir
besoin d'en prciser les dtails. Soulignons que nous avons dja rencontr ce
circuit comme une partie du demi-additionneur.
103
+ ou
1
0
0
1
1
0
in
contr
inv?
out
add
s
r
s0
in
contr
inv?
out
add
s
r
s1
b2
a2
in
contr
inv?
out
add
s
r
s2
b3
a3
in
contr
inv?
out
add
s
r
s3
s4
b0
a0
b1
a1
11
00
00
11
11
00
add/sub
a
b
additionneur
soustracteur
resultat
retenue
104
11
00
00
11
a
Mux
ac | bc
a
ac | bc
b
Figure 10.9 Un circuit multiplexeur lmentaire
Pour obtenir un circuit qui permet de faire la fois les additions ou les
soustractions, nous remplaons les inverseurs du soustracteur de la gure 10.6
par le circuit
1,
a, b
et
s,
on ne
dessine qu'un trait et on indique le nombre de ls reprsents par ce trait. Nous
avons nomm le signal de contrle add/sub pour indiquer que la valeur
ce l provoque une addition et la valeur
sur
courant pour nommer les signaux d'une faon qui permette de se souvenir de
leur fonction.
10.5
Le multiplexeur
Nous allons maintenant construire un circuit qui va nous permettre de choisir, entre plusieurs signaux en entre, lequel nous souhaitons obtenir en sortie.
On appelle ces circuits des
multiplexeurs.
105
peut donc considrer ce circuit comme un aiguillage qui connecte la sortie soit
a,
soit
b.
c0
pour liminer la moiti des signaux entrants : il ne reste que quatre signaux
parmi les huit de dpart ; le deuxime signal de contrle
et le dernier contrle
c2
c1
en limine encore 2
c2 c1 c0
reprsentent un
nombre binaire sur trois chires, compris entre 0 et 7, qui contient le numro
du signal prsent en sortie. Cette vision synthtique correspond au schma de
droite, dans lequel le multiplexeur est reprsent avec deux traits qui entrent et
un trait qui sort : sur chaque trait est indiqu le nombre de ls reprsents sur
ce trait.
En bas droite de la gure, on a une version plus gnrale : avec
de contrle, on peut choisir un signal parmi
signaux
2n .
10.6
L'unit de calcul
Nous avons maintenant tous les lments pour construire une unit arithmtique et logique : la gure 10.11 ne contient que des lments que nous connaissons dja.
Cette ual est susceptible d'eectuer 5 oprations : trois oprations logiques
106
c0
c1
c2
11
00
a0
Mux
a1
11
00
Mux
11
00
a2
Mux
a3
11
00
00
11
Mux
a4
out
Mux
a5
Mux
a6
Mux
a7
c
c
3
in
Mux
1 parmi 8
out
in
2^n
Mux
1 parmi 2^n
107
out
r in
operation
1
0
0
1
11
00
00
11
00
11
00
11
additionneur
soustracteur
mux
1 parmi 4
11
00
00
11
00
11
00
11
r out
3
r in oper
ALU
1 bit r
r out
108
resultat
code
000
001
010
011
101
opration
Non a
a + b
a OU b
a ET b
a - b
Une ual 1 bit n'est pas trs utile mais on peut combiner des units de
traitement d'un bit pour traiter le nombre de bits que l'on veut. La gure 10.12
montre une unit de calcul pour des mots de quatre bits, contruite avec quatre
units de calcul d'un bit. La partie de droite de la gure contient le symbole
qu'on emploie usuellement pour reprsenter une ual qui traite des nombres de
bits.
10.7
Rsum
Aux expressions logiques, on peut faire correspondre des circuits qu'on peut
raliser avec des transistors. Quand les circuits ne contiennent pas de boucles,
on peut aussi faire correspondre une expression logique chaque circuit. Des
circuits intressants sont l'additionneur, le multiplexeur, le dcodeur. En les
utilisant, on peut contruire une unit arithmtique et logique.
10.8
Exercices
Exercice
Exercice 10.2 : Concevoir un circuit qui reoit un nombre cod sur quatre
bits et renvoie
Exercice 10.3 : Concevoir un circuit qui reoit un nombre cod sur quatre
bits et renvoie
Ou, Et
et
Non,
qui ralise un
Ou exclusif
bien sur avec les entres et les sorties qui arrivent de l'extrieur et ne sont pas
parachutes au milieu du circuit).
et
c,
Non,
sorties valent
Exercice
a, b
et
Ou,
des
Et
c.
les transistors qui le composent ont besoin d'un peu de temps pour atteindre
un tat stable. Supposons que ce temps
109
operation
a0
b0
a1
b1
r in oper
ALU
1 bit r
r out
r in oper
ALU
1 bit r
r out
r0
op
r1
3
n
a
n
a2
b2
a3
b3
r in oper
ALU
1 bit r
r out
r
r2
r in oper
ALU
1 bit r
r out
r3
n
b
110
et
de
l'additionneur.
1 parmi n
quand
deux ?
et deux sorties
s0
et
s1
: quand
a = 0, s0 = 1
et
s1 = 0.
Quand
a=1
c'est le
Exercice
sa
entres et
2n
100, 110
et
111.
Exercice
permettre les dcalages de mots. On peut le faire, grace aux retenues entrante
et sortante, sans modier le schma de l'alu 4 bits et en n'utilisant que deux
multiplexeurs
1 parmi 2.
111
Chapitre 11
Circuits squentiels
Dans le chapitre prcdent, nous avons tudi des circuits qui permettent
de calculer des fonctions logiques : les valeurs en sortie ne dpendent que des
valeurs prsentes en entre l'instant prsent.
Pour fabriquer des mmoires, il faut des circuits dirents, dans lesquels il
y a des boucles : l'tat du circuit va alors dpendre des valeurs qui s'y sont
trouves auparavant.
11.1
Nous allons commencer par examiner deux circuits lmentaires dans lesquels
il n'y a pas d'entres et qui ne sont raliss qu'avec des boucles d'inverseurs.
112
q
a
Le circuit reprsent dans la gure 11.2 est stable : quelle que soit la valeur
de
a,
a = a.
produit 1
bas vaut
circuit
ou
0,
: le
au dpart.
L'usage veut qu'on reprsente les circuits dans le mme sens, comme sur
la gure 11.3, qui contient les mmes lments que la gure 11.2 : ici les deux
inverseurs ont leur entre sur la gauche et leur sortie sur la droite.
L'inconvnient d'un tel circuit est que nous ne pouvons pas modier la valeur
mmorise. Nous allons rsoudre ce problme dans la section suivante.
11.2
La bascule RS
Si on remplace les inverseurs des boucles prcdentes par des circuits Non-Et
Non-Ou, nous pouvons modier la valeur mmorise dans la boucle. Rappelons tout d'abord la table de vrit du Non-Ou vue au chapitre prcdent :
ou
a+b
113
Non-Ou,
et
reste stable.
a
S
Figure 11.4 Une bascule RS avec deux
prend la valeur
prend la valeur
1.
0.
a,
passe
1, alors que
Maintenant, quand
et
repassent 0,
conserve la valeur
0.
R reste 0 et que c'est la valeur de S qui prend
a du circuit du bas prend la valeur 0 et celle du circuit du
valeur 1. Quand maintenant S repasse 0, la sortie q conserve sa
1,
la sortie
haut prend la
valeur
1.
et
(comme
Set
et
Reset
: mettre 1 ou
remettre 0), puis conserver cette valeur tant que les signaux R et S restent
0.
Quand les deux signaux
et
bascule entre dans un tat instable, de la mme manire que l'inverseur boucl
que nous avons vu en premier. Si les signaux repassent 0 en mme temps,
elle convergera vers un des deux tats stables mais nous ne pouvons pas prvoir
lequel ; pour cette raison, il faut viter de mettre les deux signaux
en mme temps ; on appelle cela l'tat
11.3
interdit.
et
La bascule D
La bascule RS n'est pas trs pratique manipuler directement avec ses deux
signaux en entre et son tat interdit mais elle sert de brique pour fabriquer une
cellule mmoire lmentaire de 1 bit, qu'on appelle la
114
bascule D.
D
out
in
Figure 11.5 La constitution d'une bascule D : cellule lmentaire de mmorisation d'un bit.
in
est
Et ;
in
Non-ou
in et son
inverse qu'on va trouver en sortie des Et et la valeur de la boucle de Non-ou de
D
si
D = 0,
la sortie des
Et
D = 1,
c'est le signal
repassera 0.
Souvent pour contrler la mmorisation d'une bascule, on utilise une
horloge :
de
11.4
0.
La bascule D ne permet de mmoriser qu'un seul bit alors que les mots de la
mmoire de nos ordinateurs contiennent des valeurs reprsentes avec plusieurs
chires. On construit facilement ceci en regroupant plusieurs bacsules D.
115
Bascule
D
in0
out0
Bascule
D
in1
Bascule
D
in2
out1
out2
La gure 11.6 prsente une construction possible pour un mot mmoire qui
contient cette fois trois bits, au lieu d'un seul : on a trois bascules D, avec chacune
son signal en entre et son signal `en sortie ; les trois bascules sont commandes
par le mme signal, donc les trois bascules vont mmoriser le signal sur leur
entre au mme instant.
Il est lmentaire d'imaginer comment, sur ce modle, on peut construire
des mots de tailles plus raisonnables, comme 8, 16, 32 ou 64 bits : il sut de
multiplier, sur le mme modle, le nombre de bascules D et de signaux en entre
et en sortie.
11.5
adresse.
116
a1
data
out
a0
registre
registre
registre
registre
41
bit.
La gure 11.7 prsente une mmoire de quatre mots de 1 bit. Pour simplier
le dessin, on n'a reprsent que la partie qui sert lire le contenu de la mmoire ;
l'criture sera prsente dans la gure suivante.
La slection du mot intressant se fait dans la partie en haut gauche de la
gure. qui consitue un
deux valeurs de manire ce qu'un seul des quatre signaux en sortie vale 1
un moment donn, en fonction des valeurs de
a0
et
a1 .
registre.
qui sortent de toutes les bascles, sauf celle indique par la sortie du dcodeur
117
11.6
a1
a0
ecrire
data
in
registre
registre
registre
registre
41
bit.
crire
crire est 0.
dcodeur d'adresse dont un seul est 1 (toujours celui indiqu par la valeur
de
a0
et
a1
a1 a0
va mmoriser la valeur
prsente en entre.
11.7
a1
data
out
a0
lire/ecrire
data
in
registre 3
registre 2
registre 1
registre 0
41
bit.
a0
et
a1
2n 1
119
2n
Et et Ou en sortie.
1,
bits, avec
m>
remplacs par
dupliquer l'arbre de
D'une faon gnrale, la capacit des circuits mmoires est annonce sous
les cas de
registres.
11.8
Catgories de mmoire
Cette section fait un rapide survol des catgories les plus communes de mmoire.
la direncier des valeurs mmorises sur les bandes magntiques, les disques,
les CDROM et les DVD, pour lesquels il est bien plus rapide de lire ou d'crire
des donnes en squence, en les adressant dans l'ordre, plutt que d'accder
des adresses quelconques dans le dsordre.
120
En pratique, elles sont en gnral utilises dans les PCs pour raliser les
mmoires
dynamique, qui utilise une autre technique de ralisation que celle prsen-
te dans ce chapitre : chaque bit de mmoire est constitu d'un condensateur qui
est charg pour reprsenter
0.
Comme la charge
rafraichir la mmoire.
Comme cette technique est beaucoup plus conomique en silicium que celle
des ram statiques, les ram dynamiques ont des capacits plus importantes. Elles
se prsentent le plus souvent sous forme de
sur lesquels sont placs huit circuits de mmoire 1 bit pour raliser des mmoires
huits bits. La capacit ordinaire d'une mmoire dynamique en 2009 est de l'ordre
du Giga Octet.
Only Memory
bit de la mmoire est control par un fusible, qu'on peut faire fondre (une seule
fois !) pour modier la valeur contenue dans la mmoire, dans une machine
spciale qu'on appelle un
programmateur de PROM.
circuit bon march, parce que produit en grande quantit, que chacun peut
adapter son application.
euprome),
Erasable PROM, c'est dire des PROM eaables. Ces mmoires sont pro-
grammables comme des PROM mais en les exposant des rayons ultra-violets,
on peut en eacer le contenu et les reprogrammer dans un programmateur
d'EPROM. Quand vous dmontez un vieil ordinateur, si vous voyez un circuit intgr plac sur un support d'o on peut l'extraire, avec une tiquette en
papier qui couvre le dessus, il s'agit probablement d'une EPROM ; en dtachant
l'tiquette vous verrez apparaitre une petite fentre qui est celle utilise pour
121
eu-euprome),
Flash.
A la dirence
des EEPROM ordinaires, on y eace les donnes par bloc et non par octet.
La mmoire ash prsente l'avantage d'tre bon march, d'avoir une bonne
capacit et d'tre rapide d'accs en lecture. C'est elle qu'on trouve dans les
cartes mmoires des appareils photos, dans les baladeurs MP3 et dans les porteclefs USB. La mmoire ash prsente l'inconvnient, par rapport aux mmoires
ordinaires (et aux disques durs) de s'altrer aprs quelques milliers ou dizaines
de milliers d'critures.
A cot de ces types de mmoire, on rencontre aussi des mmoires, dites
parfois NVRAM (comme
qui sont en ralit des mmoires statiques ordinaires alimentes par des batteries.
C'est notamment l que sont stocks, sur les PCs, les paramtres du BIOS.
Quand on a oubli le mot de passe du BIOS, il sut de retirer la batterie de
la carte mre pour que le contenu du BIOS soit rinitialis. [Sur certains PC
rcents (en 2013), les paramtres du BIOS sont stocks dans une mmoire Flash ;
retirer la batterie de la carte mre ne rinitialise pas la mmoire ; il faut utiliser
une autre mthode ; en gnral, on peut l'eacer en dplaant un jumper sur la
carte.]
11.9
Exercices
Exercice
Non-Et
la place du circuit
Non-Ou.
Comment le
commande-t-on ?
Exercice
Non
et un circuit
Et
en
plus de la juxtaposition des gures 11.7 et 11.8. Deviner et expliquer leur rle.
122
Chapitre 12
Automates
Avec les circuits logiques combinatoires, nous pouvons calculer des fonctions
logiques quelconques ; avec les circuits logiques suentiels, nous pouvons mmoriser des valeurs. En combinant ces deux types de circuits, nous sommes en
mesure de fabriquer des
d'action.
Nous nous intresserons ici une classe restreinte d'automates, qu'on appelle des
informelle ici.
12.1
On peut dcrire les automates qui nous intressent par un graphe, compos
d'tats et de transitions. Ainsi, la gure 12.1 prsente un automate lmentaire
quatre tats et quatre transitions.
Les tats sont indiqus par des cercles ; ils sont relis entre eux par des
transitions,
trouve dans un des tats (au dpart, dans l'tat 0). Une horloge externe bat la
mesure ; chaque battement de l'horloge, l'automate prend une des transitions
qui part de l'tat courant et arrive dans un autre tat. Ainsi, l'automate simple
de la gure 12.1 va passer successivement dans les tats 0, 1, 2 puis 3, pour
nalement revenir dans l'tat 0 et recommencer la boucle. Il ne s'arrte jamais.
Avec chaque transition, nous avons indiqu une action ; dans notre exemple,
crire une valeur, 0 ou 1. Notre automate va donc produire une suite
de bits tant qu'il fonctionnera.
123
00110011
etat 1
ecrire 0
ecrire 0
etat 0
etat 2
ecrire 1
ecrire 1
etat 3
e1
et
e0 .
out
la table de vrit suivante, o nous avons ajout pour faciliter la lecture une
colonne gauche qui contient le numro de l'tat.
tat courant
e1
e0
out
d'arrive des transitions peut se calculer simplement comme une fonction logique
de
e1
et de
comme
s1
et
124
Horloge
s1
s0
e0
bascule D
bascule D
e1
out
tat courant
tat suivant
e1
e0
out
s1
s0
s1 = e0 .e1 + e0 .e1
et que
s0 = e0 .
La ralisation de l'automate tel qu'il est reprsent sur la gure 12.2 est
maintenant directe : pour reprsenter l'tat courant, nous avons besoin d'un
registre de deux bits, que nous ralisons avec les deux bascules D en haut
gauche du schma ; les bascules D sont commandes par l'horloge, ce qui assurera
que l'automate change d'tat chaque battement d'horloge.
125
La valeur
out
de logique combinatoire qui occupe le bas du schma. Les deux valeurs pour
reprsenter le nouvel tat sont fournies en entres aux bascules D de manire
tre mmorises au prochain battement de l'horloge.
12.2
On peut construire avec la mme mthode un automate qui traite des donnes en entre. Un exemple simple est une machine qui reoit un nombre reprsent en binaire, bit par bit de droite gauche et multiplie ce nombre par
3.
Commenons par considrer la multiplication d'un bit par 3. Bien sur 3
0 = 0 et 3 1 = 3. Comme nous traitons des nombres en binaires, le cas
3 1 = 310 = 112 doit produire un rsultat de 1 (pour le bit de droite) et une
retenue de 1 (pour le bit de gauche. Cette retenue doit tre ajoute au rsultat
de la multiplication du bit suivant, quel que soit ce bit. Cela reprsente les deux
cas suivant : 3 0 + 1 = 1 et retenue= 0) quand
3 1 + 1 = 410 = 1002 = 0 et retenue= 102 quand le
d'une part et
0, 1
et
102
et nous avons
ainsi examin tous les cas possibles, rsums dans la table suivante :
3 bit + retenue
30+0
30+1
30+2
31+0
31+1
31+2
rsultat
bit produit
retenue
210 = 102
310 = 112
410 = 1002
510 = 1012
10
10
Il faut mmoriser la retenue de l'opration prcdente : pour cela nous utilisons les tats de l'automate : chaque tat permet de se souvenir de la valeur
de la retenue ; partir d'un tat partent deux transitions, tiquetes par
et
transitions pour aller vers un nouvel tat qui mmorise la nouvelle valeur de
la retenue ; avec chaque transition, il y a aussi la production du bit de rsultat
correct. L'automate est reprsent sur la gure 12.3.
126
0 lu
ecrit 0
1 lu
ecrit 0
1 lu
ecrit 1
etat a
retenue = 0
etat c
retenue = 2
etat b
retenue = 1
0 lu
ecrit 1
0 lu
ecrit 0
Figure 12.3 L'automate de multiplication par 3. Chaque transition est tiquete par le bit lu et est accompagne d'une valeur produire. Chaque tat
correspond une valeur de la retenue.
choisir la transition qui y correspond depuis l'tat courant, (3) crire la valeur
indique sur la transition, (4) l'tat d'arrive de la transition est le nouvel tat
courant, recommencer l'tape (1).
Si l'automate reoit en entre les bits 110010 qui correspondent au nombre
0100112 = 1910 , il va passer par les tats a, b, c, b, a, b, a et produire les bits
100111 qui correspondent au nombre 1110012 = 718 = 5710 . Le travail sur cet
exemple peut se rsumer dans la table suivante :
tat
bit lu
bit crit
Une fois que l'automate est dessin, nous sommes en mesure de construire
la table de vrit qui y correspond : chaque combinaison de l'tat courant
(reprsent sur deux bits
e1
et
e0 )
et du bit entrant
n1
et
n0 )
i,
on fait correspondre le
et le bit de sortie
comme dans
e1
e0
etat suivant
n1
n0
Comme on peut le voir, nous avons complt la table avec les lignes qui rendent
127
1 lu
ecrit1
compte de l'tat 3, que nous n'utilisons pas, pour lequel les valeurs de sorties
sont quelconques ; nous pouvons, si c'est utile, choisir d'utiliser ces valeurs pour
simplier les expressions dans notre table de Karnaugh.
On peut donc calculer les fonctions qui permettent de calculer
n1 , n0
et
comme :
n1 =
n0 =
o=
e1.e0.i + e1.e0.i
e1.e0.i + e1.e0.i
e1.e0.i + e1.e0.i + e1.e0.i
donc
n1
e1 e0
e1 e0
donc
e1 e0
V
n1 = e1 .i + e0 .i.
e1 e0
donc
e1 .e0
e1 e0
e1 .e0
e1 e0
e1 e0
e1 .e0
e1 e0
n0 = e1 .i + e1 .e0 .i.
e1 e0
V
o = e0 .i + e0 .i.
Il sut maintenant de raliser le circuit comme sur la gure 12.4 pour avoir
une implmentation de l'automate. Le circuit proprement parler est l'intrieur du rectangle pointill ; il y a deux signaux en entres et un signal en
sortie
En entre l'horloge sert cadencer le fonctionnment. Sur le signal
sont
est mmoris
dans la bascule D du bas, alors que les deux bascules du haut prennent la valeur
du prochain tat destination calcul par la dernire transition.
Ces valeurs sont alors envoyes dans le bloc de logique combinatoire qui
occupe toute la partie droite du circuit. Il produit la valeur du prochain bit du
rsultat (sur
o)
128
n0
et
n1 )
horloge
n1
n0 D
e1
e0
D
i
o
Figure 12.4 Une ralisation de l'automate pour multiplier (la reprsentation
d')un nombre (en binaire) par 3.
129
12.3
Un automate gnral
horloge
signaux
en entree
registre
detat
Logique
de calcul
signaux
en sortie
Figure 12.5 L'architecture gnrale d'un automate
12.4
Exercices
Exercice
11001
Exercice 12.2 : Dessiner le graphe d'un automate qui ralise une multiplication par 5 sur le modle de celui de la multiplication par 3. Quelle sera l'quation
qui permettra de calculer la sortie en fonction des bits du numro de l'tat ?
Exercice 12.3 : L'automate de la gure 12.6 lit un nombre binaire bit par
bit et dtermine si c'est un multiple de 3. Dessiner le circuit qui lui correspond.
130
lu 0
lu 1
lu 0
etat 0
reste 0
etat 1
reste 1
lu 1
etat 2
reste 2
lu 1
lu 0
Figure 12.6 Quand l'automate est dans l'tat 0, le nombre lu jusqu' maintenant est un multiple de 3.
131
Chapitre 13
L'ordinateur en papier
Voici un ordinateur qui fonctionne sans lectricit ; il sut d'un papier, d'un
crayon et d'une gomme (et d'un peu de patience) pour le faire fonctionner. (Ce
chapitre est une retranscription du support de cours conu par Vincent Lesbros
en octobre 1990.)
Son schma est rduit au minimum mais le principe de fonctionnement est
inspir de celui de petits processeurs squentiels qui existent rellement.
13.1
Anatomie
L'ordinateur en papier possde une mmoire (la grille carre) dont chaque
case est numrote. Chaque case peut contenir une valeur numrique (note en
base seize ou systme de numration hexadcimal, avec deux chires) variant
de 00 FF.
La mmoire contient deux registres :
Le
Registre Mot
et l'unit centrale.
La mmoire est de 256 cases, donc les adresses des cases vont de 00 FF (et
peuvent tre galement contenues dans des cases de la mmoire pour constituer
un
pointeur).
Accumulateur
l'
(le registre (A)) et le registre mot (RM) ; les rsultats des op-
13.2
Fonctionnement
tourner
langage
le programme en rptant le
cycle. Le cycle est constitu de trois phases : La premire phase est la recherche
d'instruction, la deuxime phase contient le dcodage de l'instruction et sa ralisation proprement dite (recherche de l'oprande et calcul ventuel), la troisime
phase (qui peut tre omise dans certains cas) permet de pointer vers l'instruction
suivante.
La rubrique
eectuer. (Les microcodes sont nots dans des cercles.) Pour la deuxime phase,
la squence de microcode dpend du code opratoire inscrit dans le registre OP.
La rubrique
133
13.3
Le langage d'assemblage
Mnmoniques
arithmtique
]
ADD
SUB ]
SUB
SUB
Code opratoire
ADD
20
ADD
60
NAND
NAND
NAND
21
61
E1
62
E2
]
LOAD
LOAD
STORE
STORE
LOAD
40
C0
48
IN
OUT
OUT
IN
C8
C1
() Entre
() Entre
Sortie ()
Sortie ()
10
PC
11
si
12
si
49
C9
41
Branchement
inconditionnel
conditinonels
BRZ
AV
A ()
A ()
() A
() A
00
Entres / Sorties
BRN
A [A&V ]
A [A&()]
A [A& ()]
22
transferts
JUMP
AA+V
A A + ()
A A + ()
AAV
A A ()
A A ()
E0
logique
description
A<0
A=0
alors PC
alors PC
Lgende :
La che
reprsente
l'aectation.
()
134
s'applique une
Chaque instruction est code sur deux octets, le premier est le code opratoire (dans un rectangle), le second est la valeur ou l'adresse de l'oprande.
Par exemple :
LOAD 1F (charger le contenu de la case 1F dans A)
s'encode avec : 40 1F dans deux cases conscutives.
LOAD
]00
(mettre 00 dans A)
13.4
Adressage immdiat
Dans l'adressage immdiat, on donne directement la valeur avec laquelle
l'opration est eectuer.
Exemples
Mnmoniques
LOAD
]FF
hexadcimal
description
00
FF
Mnmoniques
ADD
]01
hexadcimal
description
20
01
son contenu)
Adressage absolu
L'adressage absolu permet de dsigner une valeur par son adresse en mmoire
(ce mode est quali d'
hexadcimal
LOAD 22
40
ADD 20
60
22
20
Ce programme charge l'accumulateur avec la valeur contenue dans la case mmoire d'adresse 22 puis ajoute cette valeur le contenu de la case mmoire 20 ;
le rsultat est dans l'accumulateur.
135
Adressage indirect
L'adressage indirect permet de faire une
pointeur.
hexadcimal
SUB * 1F
E1
1F
02
= 0E).
13.5
Les microcodes
Transferts
Gommez le contenu du registre gauche de la che et y inscrire le contenu
de celui de droite.
1
(RS) (PC)
2
(PC) (RM) ; ne
3
(A) (RM)
4
(RM) (A)
5
(OP) (RM)
6
(AD) (RM)
7
(RS) (AD)
8
(RM) (Entre)
9
(Sortie) (RM)
136
Prparation du calcul
10 crire + dans UAL
11 crire dans UAL (la
17 crire
Calculer
12 Eectuer
Commandes de la mmoire
13 Lecture
de la mmoire :
14 Ecriture
en mmoire :
Divers
13.6
Le cycle
1
13
5
15 passer
la phase II
137
microcodes
00
3
13
1
10
puis passer la
2
13
1
phase I
11
Si (A) < 0
2
13
1
puis
phase I
12
Si (A) = 0
puis
2
13
1
phase I
20
12
13
1
10
21
12
13
1
11
22
17
1
13
12
40
1
13
6
7
13
3
41
1
13
6
7
13
9
48
1
13
6
7
4
14
49
1
13
6
7
16
8
14
60
10
1
13
6
7
13
12
61
11
1
13
6
7
13
12
62
17
1
13
6
7
13
12
C0
1
13
6
7
13
6
7
13
3
C1
1
13
6
7
13
6
7
13
9
C8
1
13
6
7
13
6
7
4
14
C9
1
13
6
7
13
6
7
16
8
14
E0
10
1
13
6
7
13
6
7
13
12
E1
11
1
13
6
7
13
6
7
13
12
E2
Phase III
15 puis
13.7
Le
phase I
une adresse qui est place dans le PC chaque dmarrage, c'est donc le premier
programme tre excut et il est charg de faire le ncessaire pour la mise en
place et le fonctionnement du systme d'exploitation.
138
Le programme qui suit permet de charger en mmoire votre propre programme et de l'excuter.
Mode d'emploi :
Ecrivez le programme partir de l'adresse 00
Allumez l'ordinnateur :
(PC) 00
adresse
code
mnmonique
commentaire
00
49
IN 20
01
20
02
49
IN 22
03
22
04
40
LOAD 20
05
20
06
48
STORE 21
Adresse courante
07
21
08
C9
IN * 21
09
21
0A
40
LOAD 22
0B
22
0C
21
0D
01
0E
12
0F
1F
10
48
11
22
12
40
13
21
14
20
15
01
16
10
17
06
SUB
]1
adresse
Nb.
du programme
BRZ 1F
STORE 22
LOAD 21
ADD
]1
JUMP 06
l'incrmenter
Continuer charger
18
1E
00
1F
10
JUMP ? ?
20
??
l'adresse de dbut
21
??
Adresse courante
22
??
13.8
Exercices
B
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
7
R
S
R
M
1
3
O
P
+1
15
A
D
6
A
Sequenceur
Entree
9
UAL
140
P
C
2
Unite de controle
Sortie
Exercice 13.2 : tant donn la logique qui existe entre les codes opratoires
et le microcode, quelle code pourrait correspondre l'instruction
IN ] ?
Exercice 13.3 : tant donn la logique qui existe entre les codes opratoires
et le microcode, quelle opration pourrait correspondre le code 01 ?
Exercice
Exercice
SHIFT
141
adresse
valeur
50
49 70
52
40 70
54
48 71
56
48 72
58
00 5E
5A
48 8d
5C
10 74
5E
40 71
60
48 72
62
40 70
64
48 71
66
00 6C
68
48 8d
6A
10 74
6C
41 71
6E
10 6E
70
00
71
00
72
00
73
00
74
00 00
76
48 73
78
40 71
7A
12 88
7C
21 01
7E
48 71
80
40 73
82
60 72
84
48 73
86
10 78
88
40 73
8a
48 71
8c
10 00
142
Chapitre 14
Projet et valuation
143
<http ://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies of this license
document, but changing it is not allowed.
0. PREAMBLE
The purpose of this License is to make a manual, textbook, or other functional and useful document "free" in the sense of freedom : to assure everyone
the eective freedom to copy and redistribute it, with or without modifying it,
either commercially or noncommercially. Secondarily, this License preserves for
the author and publisher a way to get credit for their work, while not being
considered responsible for modications made by others.
This License is a kind of "copyleft", which means that derivative works of the
document must themselves be free in the same sense. It complements the GNU
General Public License, which is a copyleft license designed for free software.
We have designed this License in order to use it for manuals for free software,
because free software needs free documentation : a free program should come
with manuals providing the same freedoms that the software does. But this
License is not limited to software manuals ; it can be used for any textual work,
regardless of subject matter or whether it is published as a printed book. We
recommend this License principally for works whose purpose is instruction or
reference.
1. APPLICABILITY AND DEFINITIONS
This License applies to any manual or other work, in any medium, that
contains a notice placed by the copyright holder saying it can be distributed
under the terms of this License. Such a notice grants a world-wide, royaltyfree license, unlimited in duration, to use that work under the conditions stated
herein. The "Document", below, refers to any such manual or work. Any member
of the public is a licensee, and is addressed as "you". You accept the license if
you copy, modify or distribute the work in a way requiring permission under
144
copyright law.
A "Modied Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modications and/or
translated into another language.
A "Secondary Section" is a named appendix or a front-matter section of
the Document that deals exclusively with the relationship of the publishers
or authors of the Document to the Document's overall subject (or to related
matters) and contains nothing that could fall directly within that overall subject.
(Thus, if the Document is in part a textbook of mathematics, a Secondary
Section may not explain any mathematics.) The relationship could be a matter
of historical connection with the subject or with related matters, or of legal,
commercial, philosophical, ethical or political position regarding them.
The "Invariant Sections" are certain Secondary Sections whose titles are
designated, as being those of Invariant Sections, in the notice that says that
the Document is released under this License. If a section does not t the above
denition of Secondary then it is not allowed to be designated as Invariant.
The Document may contain zero Invariant Sections. If the Document does not
identify any Invariant Sections then there are none.
The "Cover Texts" are certain short passages of text that are listed, as FrontCover Texts or Back-Cover Texts, in the notice that says that the Document is
released under this License. A Front-Cover Text may be at most 5 words, and
a Back-Cover Text may be at most 25 words.
A "Transparent" copy of the Document means a machine-readable copy,
represented in a format whose specication is available to the general public, that
is suitable for revising the document straightforwardly with generic text editors
or (for images composed of pixels) generic paint programs or (for drawings) some
widely available drawing editor, and that is suitable for input to text formatters
or for automatic translation to a variety of formats suitable for input to text
formatters. A copy made in an otherwise Transparent le format whose markup,
or absence of markup, has been arranged to thwart or discourage subsequent
modication by readers is not Transparent. An image format is not Transparent
if used for any substantial amount of text. A copy that is not "Transparent" is
called "Opaque".
Examples of suitable formats for Transparent copies include plain ASCII
without markup, Texinfo input format, LaTeX input format, SGML or XML
using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modication. Examples of transparent image
formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML
or XML for which the DTD and/or processing tools are not generally available,
and the machine-generated HTML, PostScript or PDF produced by some word
processors for output purposes only.
The "Title Page" means, for a printed book, the title page itself, plus such
following pages as are needed to hold, legibly, the material this License requires
145
to appear in the title page. For works in formats which do not have any title
page as such, "Title Page" means the text near the most prominent appearance
of the work's title, preceding the beginning of the body of the text.
The "publisher" means any person or entity that distributes copies of the
Document to the public.
A section "Entitled XYZ" means a named subunit of the Document whose
title either is precisely XYZ or contains XYZ in parentheses following text that
translates XYZ in another language. (Here XYZ stands for a specic section
name mentioned below, such as "Acknowledgements", "Dedications", "Endorsements", or "History".) To "Preserve the Title" of such a section when you
modify the Document means that it remains a section "Entitled XYZ" according to this denition.
The Document may include Warranty Disclaimers next to the notice which
states that this License applies to the Document. These Warranty Disclaimers
are considered to be included by reference in this License, but only as regards
disclaiming warranties : any other implication that these Warranty Disclaimers
may have is void and has no eect on the meaning of this License. 2. VERBATIM
COPYING
You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and
the license notice saying this License applies to the Document are reproduced in
all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or
further copying of the copies you make or distribute. However, you may accept
compensation in exchange for copies. If you distribute a large enough number
of copies you must also follow the conditions in section 3.
You may also lend copies, under the same conditions stated above, and you
may publicly display copies.
3. COPYING IN QUANTITY
If you publish printed copies (or copies in media that commonly have printed
covers) of the Document, numbering more than 100, and the Document's license
notice requires Cover Texts, you must enclose the copies in covers that carry,
clearly and legibly, all these Cover Texts : Front-Cover Texts on the front cover,
and Back-Cover Texts on the back cover. Both covers must also clearly and
legibly identify you as the publisher of these copies. The front cover must present
the full title with all words of the title equally prominent and visible. You may
add other material on the covers in addition. Copying with changes limited to
the covers, as long as they preserve the title of the Document and satisfy these
conditions, can be treated as verbatim copying in other respects.
If the required texts for either cover are too voluminous to t legibly, you
should put the rst ones listed (as many as t reasonably) on the actual cover,
and continue the rest onto adjacent pages.
If you publish or distribute Opaque copies of the Document numbering more
146
than 100, you must either include a machine-readable Transparent copy along
with each Opaque copy, or state in or with each Opaque copy a computernetwork location from which the general network-using public has access to
download using public-standard network protocols a complete Transparent copy
of the Document, free of added material. If you use the latter option, you must
take reasonably prudent steps, when you begin distribution of Opaque copies
in quantity, to ensure that this Transparent copy will remain thus accessible at
the stated location until at least one year after the last time you distribute an
Opaque copy (directly or through your agents or retailers) of that edition to the
public.
It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a
chance to provide you with an updated version of the Document.
4. MODIFICATIONS
You may copy and distribute a Modied Version of the Document under the
conditions of sections 2 and 3 above, provided that you release the Modied
Version under precisely this License, with the Modied Version lling the role
of the Document, thus licensing distribution and modication of the Modied
Version to whoever possesses a copy of it. In addition, you must do these things
in the Modied Version :
A. Use in the Title Page (and on the covers, if any) a title distinct from that
of the Document, and from those of previous versions (which should, if there
were any, be listed in the History section of the Document). You may use the
same title as a previous version if the original publisher of that version gives
permission.
B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modications in the Modied Version, together
with at least ve of the principal authors of the Document (all of its principal
authors, if it has fewer than ve), unless they release you from this requirement.
C. State on the Title page the name of the publisher of the Modied Version,
as the publisher.
D. Preserve all the copyright notices of the Document.
E. Add an appropriate copyright notice for your modications adjacent to
the other copyright notices.
F. Include, immediately after the copyright notices, a license notice giving the
public permission to use the Modied Version under the terms of this License,
in the form shown in the Addendum below.
G. Preserve in that license notice the full lists of Invariant Sections and
required Cover Texts given in the Document's license notice.
H. Include an unaltered copy of this License.
I. Preserve the section Entitled "History", Preserve its Title, and add to it an
item stating at least the title, year, new authors, and publisher of the Modied
Version as given on the Title Page. If there is no section Entitled "History" in
147
the Document, create one stating the title, year, authors, and publisher of the
Document as given on its Title Page, then add an item describing the Modied
Version as stated in the previous sentence.
J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations
given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that
was published at least four years before the Document itself, or if the original
publisher of the version it refers to gives permission.
K. For any section Entitled "Acknowledgements" or "Dedications", Preserve
the Title of the section, and preserve in the section all the substance and tone
of each of the contributor acknowledgements and/or dedications given therein.
L. Preserve all the Invariant Sections of the Document, unaltered in their
text and in their titles. Section numbers or the equivalent are not considered
part of the section titles.
M. Delete any section Entitled "Endorsements". Such a section may not be
included in the Modied Version..
N. Do not retitle any existing section to be Entitled "Endorsements" or to
conict in title with any Invariant Section.
O. Preserve any Warranty Disclaimers.
If the Modied Version includes new front-matter sections or appendices
that qualify as Secondary Sections and contain no material copied from the
Document, you may at your option designate some or all of these sections as
invariant. To do this, add their titles to the list of Invariant Sections in the
Modied Version's license notice. These titles must be distinct from any other
section titles.
You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modied Version by various partiesfor example,
statements of peer review or that the text has been approved by an organization
as the authoritative denition of a standard.
You may add a passage of up to ve words as a Front-Cover Text, and a
passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover
Texts in the Modied Version. Only one passage of Front-Cover Text and one
of Back-Cover Text may be added by (or through arrangements made by) any
one entity. If the Document already includes a cover text for the same cover,
previously added by you or by arrangement made by the same entity you are
acting on behalf of, you may not add another ; but you may replace the old one,
on explicit permission from the previous publisher that added the old one.
The author(s) and publisher(s) of the Document do not by this License give
permission to use their names for publicity for or to assert or imply endorsement
of any Modied Version.
5. COMBINING DOCUMENTS
You may combine the Document with other documents released under this
148
License, under the terms dened in section 4 above for modied versions, provided that you include in the combination all of the Invariant Sections of all of the
original documents, unmodied, and list them all as Invariant Sections of your
combined work in its license notice, and that you preserve all their Warranty
Disclaimers.
The combined work need only contain one copy of this License, and multiple
identical Invariant Sections may be replaced with a single copy. If there are
multiple Invariant Sections with the same name but dierent contents, make
the title of each such section unique by adding at the end of it, in parentheses,
the name of the original author or publisher of that section if known, or else
a unique number. Make the same adjustment to the section titles in the list of
Invariant Sections in the license notice of the combined work.
In the combination, you must combine any sections Entitled "History" in
the various original documents, forming one section Entitled "History" ; likewise
combine any sections Entitled "Acknowledgements", and any sections Entitled
"Dedications". You must delete all sections Entitled "Endorsements".
6. COLLECTIONS OF DOCUMENTS
You may make a collection consisting of the Document and other documents
released under this License, and replace the individual copies of this License in
the various documents with a single copy that is included in the collection,
provided that you follow the rules of this License for verbatim copying of each
of the documents in all other respects.
You may extract a single document from such a collection, and distribute it
individually under this License, provided you insert a copy of this License into
the extracted document, and follow this License in all other respects regarding
verbatim copying of that document.
7. AGGREGATION WITH INDEPENDENT WORKS
A compilation of the Document or its derivatives with other separate and
independent documents or works, in or on a volume of a storage or distribution
medium, is called an "aggregate" if the copyright resulting from the compilation
is not used to limit the legal rights of the compilation's users beyond what
the individual works permit. When the Document is included in an aggregate,
this License does not apply to the other works in the aggregate which are not
themselves derivative works of the Document.
If the Cover Text requirement of section 3 is applicable to these copies of the
Document, then if the Document is less than one half of the entire aggregate, the
Document's Cover Texts may be placed on covers that bracket the Document
within the aggregate, or the electronic equivalent of covers if the Document is
in electronic form. Otherwise they must appear on printed covers that bracket
the whole aggregate.
8. TRANSLATION
Translation is considered a kind of modication, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sec-
149
tions with translations requires special permission from their copyright holders,
but you may include translations of some or all Invariant Sections in addition to
the original versions of these Invariant Sections. You may include a translation
of this License, and all the license notices in the Document, and any Warranty
Disclaimers, provided that you also include the original English version of this
License and the original versions of those notices and disclaimers. In case of a
disagreement between the translation and the original version of this License or
a notice or disclaimer, the original version will prevail.
If a section in the Document is Entitled "Acknowledgements", "Dedications",
or "History", the requirement (section 4) to Preserve its Title (section 1) will
typically require changing the actual title.
9. TERMINATION
You may not copy, modify, sublicense, or distribute the Document except as
expressly provided under this License. Any attempt otherwise to copy, modify,
sublicense, or distribute it is void, and will automatically terminate your rights
under this License.
However, if you cease all violation of this License, then your license from
a particular copyright holder is reinstated (a) provisionally, unless and until
the copyright holder explicitly and nally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some
reasonable means prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder noties you of the violation by some reasonable
means, this is the rst time you have received notice of violation of this License
(for any work) from that copyright holder, and you cure the violation prior to
30 days after your receipt of the notice.
Termination of your rights under this section does not terminate the licenses
of parties who have received copies or rights from you under this License. If your
rights have been terminated and not permanently reinstated, receipt of a copy
of some or all of the same material does not give you any rights to use it.
10. FUTURE REVISIONS OF THIS LICENSE
The Free Software Foundation may publish new, revised versions of the GNU
Free Documentation License from time to time. Such new versions will be similar
in spirit to the present version, but may dier in detail to address new problems
or concerns. See http ://www.gnu.org/copyleft/.
Each version of the License is given a distinguishing version number. If the
Document species that a particular numbered version of this License "or any
later version" applies to it, you have the option of following the terms and
conditions either of that specied version or of any later version that has been
published (not as a draft) by the Free Software Foundation. If the Document
does not specify a version number of this License, you may choose any version
ever published (not as a draft) by the Free Software Foundation. If the Document
species that a proxy can decide which future versions of this License can be
150
151