Professional Documents
Culture Documents
Architecture Des Ordinateurs - Exercices - 2324
Architecture Des Ordinateurs - Exercices - 2324
DES ORDINATEURS
EXERCICES
François SCHUMACKER, Ir
Ce document est disponible sous licence Creative Commons indiquant qu’il peut être
reproduit, distribué et communiqué pour autant que le nom des auteurs reste présent,
qu’aucune utilisation commerciale ne soit faite à partir de celui-ci et que le document ne
soit ni modifié, ni transformé, ni adapté.
http://creativecommons.org/licenses/by-nc-nd/2.0/be/
La Haute École Libre Mosane (HELMo) attache une grande importance au respect des
droits d’auteur. C’est la raison pour laquelle nous invitons les auteurs dont une œuvre
aurait été, malgré tous nos efforts, reproduite sans autorisation suffisante, à contacter
immédiatement le service juridique de la Haute École afin de pouvoir régulariser la
situation au mieux.
11 Histoire de l’informatique
1.1 Des nombres et des hommes
1. Donner le nom du système de numération et calculer la valeur décimale des nombres suivants :
a. 10102
b. 420315
c. 1237
d. 7778
e. 1234512
2 Présentation générale
2 d’un ordinateur
3 Le codage des
3 informations
2. Compter de 0 à 15 en base 5.
3. Compter de 0 à 15 en octal.
b. 10001100111011102
c. 2100123
d. 32104
e. 56327
f. 0078
g. 4288
h. 20148
i. 201416
j. ADA16
k. CD16
l. BEBE16
m. CAT16
n. BAFFE16
Pour convertir du binaire vers une base B = 2n, on découpe le nombre binaire en tronçons de n bits
en allant de la droite vers la gauche. Chaque tronçon correspond à un chiffre en base B. Il faut
éventuellement compléter le dernier tronçon de gauche avec des 0.
3. Convertir 10111110101111102 en hexadécimal.
Pour convertir entre deux bases B et B’ qui sont des puissances de 2, on procède en deux étapes :
1. Conversion de la base B vers le binaire.
2. Conversion du binaire vers la base B’.
5. Convertir 4F1616 en octal.
2. Quelle est la valeur du plus grand nombre naturel représentable sur 16 bits ?
3. Si je souhaite représenter les nombres naturels de 0 à 63, de combien de bits ai-je besoin ?
b. 5432110
c. 6666610
b. ABC16
c. R2D216
d. A9F216
6. Quelle est la caractéristique de la représentation interne binaire de tous les nombres naturels
qui sont des multiples de 8 (0, 8, 16, 24, …, 800, …, 8000, …, 36504, …) ?
a. Que se passe-t-il si on décale tous les bits de cette représentation d’une position vers la
droite ?
b. Que se passe-t-il si on décale tous les bits de cette représentation d’une position vers la
gauche ?
10. Considérons un circuit mémoire de 64K (64x1024 octets). Pour que chaque octet soit accessible
au moyen d’une adresse mémoire unique, de combien d’adresses avons-nous besoin ? Quelle
sera la taille (minimale) en bits d’une adresse ?
11. On décide de diviser cette mémoire en 64 blocs de 1024 octets qui se suivent en mémoire. Les
blocs sont numérotés de 0 à 63, les octets au sein de chaque bloc de 0 à 1023. Le bloc 0
commence à l’adresse 0, le bloc 1 à l’adresse 1024, le bloc 2 à l’adresse 2048, etc.
a. Quelle est l’adresse de l’octet 723 du bloc 45 ?
12. Dans le système RGB (Red/Green/Blue), une couleur est représentée par un triplet de nombres
compris entre 0 et 255 (8 bits) qui indiquent l’intensité de chaque couleur de base pour obtenir
la couleur composée. Ainsi, le triplet (153, 51, 255) représente une nuance de mauve. On peut
également représenter le code couleur par un nombre hexadécimal de 6 chiffres (2 chiffres
hexa par composante). Pour notre nuance de mauve, cela donne 0x9933FF (=9933FF16).
a. Calculer le code hexadécimal de la couleur RGB (57, 122, 206).
b. -108
c. -127
d. -1
e. -128
2. Calculer la valeur décimale des nombres binaires suivants, sachant qu’ils sont représentés en
signe et valeur absolue :
a. 01010101
b. 11010101
c. 11100011
3.4.3.2 Complément à 1
Dans la représentation en complément à 1, ou complément logique, on utilise également le bit le
plus significatif comme bit de signe. En revanche, pour passer d’un nombre positif à un nombre
négatif, on inverse également tous les bits représentant la valeur absolue du nombre.
1. Calculer la représentation binaire sur 8 bits en complément à 1 des nombres suivants :
a. 108
b. -108
c. -127
d. -1
e. -128
2. Calculer la valeur décimale des nombres binaires suivants, sachant qu’ils sont représentés en
complément à 1 :
a. 01010101
b. 11010101
c. 11100011
3.4.3.3 Complément à 2
Le complément à 2, ou complément arithmétique, s’obtient en ajoutant +1 à la valeur du
complément à 1. Méthode rapide : on recopie tous les bits du nombre positif en commençant par la
droite jusqu’au premier 1 inclus, après quoi on inverse tous les bits qui suivent.
1. Calculer la représentation binaire sur 8 bits en complément à 2 des nombres suivants :
a. 108
b. -108
c. -127
d. -1
e. -128
2. Calculer la valeur décimale des nombres binaires suivants, sachant qu’ils sont représentés en
complément à 2 :
a. 01010101
b. 11010101
c. 11100011
3. Exercice récapitulatif 1 – calculer la représentation binaire sur 8 bits des nombres suivants :
a. 91
c. -91 en complément à 1
d. -91 en complément à 2
c. complément à 1
d. complément à 2
Pour soustraire un nombre, il suffit d’additionner son complément. On additionne tous les chiffres
et on laisse tomber le report final éventuel. Un dépassement de capacité est détecté par le fait que
la retenue générée sur le bit de signe est différente de celle générée sur le bit juste avant.
5. Réaliser les opérations suivantes en arithmétique binaire sur 8 bits en complément à 2. Vérifier
si le résultat binaire obtenu correspond bien à la valeur attendue.
a. 5 + 122 = 127
b. 122 + 64 = 186
c. 64 - 96 = -32
d. -96 - 32 = -128
e. -96 - 64 = -160
b. 10011100
b. -32
c. 128
d. 0
e. -128
f. 140
g. -127
2. Calculer la valeur effective des nombres binaires suivants, sachant qu’un biais de +127 est
utilisé :
a. 10000100
b. 11111010
c. 00001111
d. 00000000
e. 10101010
SM EXPOSANT MANTISSE
où
Rappel : la forme normalisée d’un nombre réel binaire définie par le standard IEEE 754 s’obtient en
ajustant l’exposant de telle sorte que la partie entière de la mantisse soit égale à 1. La seule
exception est le nombre 0 qui est représenté par un mot mémoire dont tous les bits sont à 0.
La technique du contrôle de parité consiste à ajouter un bit supplémentaire, appelé bit de parité, aux
données à protéger. La valeur du bit de parité est calculée de manière à ce que le nombre total de
bits à 1 soit pair (parité paire) ou impair (parité impaire).
1. Calculer le bit de parité paire/impaire pour chaque lettre du mot « LOVE » codé en ASCII sur 7
bits.
b. 01110001110010
2. Déterminer le mot codé en ASCII sur 7 bits qui correspond au tableau de double parité suivant.
On suppose que les lignes utilisent une parité impaire (PI) et les colonnes une parité paire (PP).
Car. Code b6 b5 b4 b3 b2 b1 b0 PI
1 0 1 1 0 0 0 1
1 0 0 0 1 0 1 0
1 0 1 1 1 0 0 0
1 0 0 1 1 0 1 1
1 1 1 1 1 1 1 1
PP 1 1 0 0 0 1 1
Si on numérote les bits du code de Hamming de droite à gauche en commençant par 1, les bits de
contrôle sont ceux dont le numéro correspond à une puissance de 2, à savoir : 1, 2, 4, 8, 16, …
La longueur totale maximale du message protégé par un code de Hamming contenant k bits de
contrôle est m = 2k-1, avec m = d + k (d = taille des données, k = nombre de bits de contrôle).
k 2k mmax dmax
1 2 1 0
2 4 3 0
3 8 7 4
4 16 15 11
5 32 31 26
6 64 63 57
7 128 127 120
Par exemple, avec k = 3 bits de parité, la taille maximale du message est de m = 7 bits, soit un
maximum de d = 4 bits de données.
7 6 5 4 3 2 1
d4 d3 d2 k3 d1 k2 k1
La méthode rapide pour calculer les bits de parité d’un code de Hamming consiste à :
1. Identifier les bits de données qui valent 1.
2. Exprimer leurs positions en binaire sur k bits.
3. Calculer la valeur du bit de parité (paire ou impaire) de chaque colonne.
1. Calculer le code de Hamming à parité impaire pour transmettre les données suivantes :
a. 111
b. 1001
c. 11001100
d. 10101010101
2. Retrouver les données initiales transmises au moyen des codes de Hamming à parité paire
suivants. (Vérifier l’exactitude du code et le corriger si nécessaire.)
a. 0101101
b. 1011111
c. 1100010000
d. 111110001111111
FN1 =
FN2 =
FN1 =
FN2 =
3. Déterminez les 2 formes normales de la fonction F() donnée par la table de vérité suivante.
A B C F()
0 0 0 0
0 0 1 1
0 1 0 0
0 1 1 1
1 0 0 1
1 0 1 1
1 1 0 1
1 1 1 0
FN1 =
FN2 =
4. Déterminez les 2 formes normales de la fonction F() donnée par la table de vérité suivante.
A B C F()
0 0 0 1
0 0 1 1
0 1 0 0
0 1 1 1
1 0 0 0
1 0 1 1
1 1 0 0
1 1 1 1
FN1 =
FN2 =
FN2 =
6. Considérons la fonction de 3 variables « parité paire », c’est-à-dire une fonction F(a,b,c) dont la
valeur vaut 1 lorsqu’un nombre impair des trois variables a, b, c valent 1.
a. Déterminer la table de vérité de cette fonction.
b. Déterminer la première forme normale de cette fonction.
c. Dessiner le circuit générique (=non optimisé) qui correspond à la première forme
normale.
7. Considérons la fonction de 3 variables « parité impaire », c’est-à-dire une fonction F(a,b,c) dont
la valeur vaut 1 lorsqu’un nombre pair des trois variables a, b, c valent 1.
a. Déterminer la table de vérité de cette fonction.
b. Déterminer la deuxième forme normale de cette fonction.
c. Dessiner le circuit générique (=non optimisé) qui correspond à la deuxième forme
normale.
a b 𝒂+𝒃 ̅
̅+𝒃
𝒂 F
Utilité ?
T1 T2 T3
a b 𝒂⊕𝒃 ̅𝒃
𝒂 T1+T2 F
Utilité ?
A
B
F
C
𝐹(𝐴, 𝐵, 𝐶) =
A B C F()
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
A
B
F
C
𝐹(𝐴, 𝐵, 𝐶) =
A B C F()
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
ABC
𝐹(𝐴, 𝐵, 𝐶) =
A B C F()
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
Utilité ?
ABC
𝐹(𝐴, 𝐵, 𝐶) =
A B C F()
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
Utilité ?
16. Considérons une fonction logique de 4 variables dont la valeur vaut 1 lorsque (exactement) 2
des 4 variables d’entrée valent 1.
a. Construire la table de vérité de cette fonction.
b. Déterminer la forme normale la plus compacte.
c. Dessiner le circuit correspondant.
d. Combien faudrait-il de portes à 2 ou 1 entrée(s) pour implémenter cette forme normale ?
e. Proposer un circuit plus simple qui n’utilise que des portes ET, OU, XOR à 2 entrées et NON.
A B C D F()
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Circuit simplifié
17. Soit A3A2A1A0 un code BCD et F(A3, A2, A1, A0) une fonction logique qui permet de détecter que
A3A2A1A0 est un code BCD invalide (F vaut 1 si le code est invalide).
a. Construire la table de vérité de la fonction logique F(A3, A2, A1, A0).
b. Obtenir l’expression algébrique la plus simple possible pour cette fonction.
c. Dessiner le circuit logique correspondant.
A3 A2 A1 A0 F()
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Circuit logique
F(A, B, C) =
Expression simplifiée :
A B C F()
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
Rôle du circuit ?
19. Déterminez la table de vérité des fonctions 𝑭𝟏 et 𝑭𝟐 dont on vous donne une des deux formes
normales. En déduire, l’autre forme normale
𝐹1 = 𝐴̅. 𝐵̅. 𝐶̅ + 𝐴̅. 𝐵. 𝐶̅ + 𝐴. 𝐵̅. 𝐶̅ + 𝐴. 𝐵. 𝐶̅ Forme normale : ……..
A B C F1() F2()
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
𝐹1 =
𝐹2 =
VCC
D0
a b NOR
0 0 D1
A B
0 1
D2
1 0
1 1 D3
A B
b. XOR
VCC
D0
a b XOR
0 0 D1
A B
0 1
D2
1 0
1 1 D3
A B
c. Majorité de 3 variables
VCC
a b c MAJ
D0
0 0 0
D1
0 0 1 D2
0 1 0 D3
Maj(A, B, C)
0 1 1 D4
1 0 0 D5
1 0 1 D6
1 1 0 D7
1 1 1
A B C
3. Réaliser un codeur octal vers binaire. Il s’agit d’un circuit avec 8 entrées numérotées de 0 à 7
(les 8 chiffres valides en octal) et 3 sorties (B0, B1, B2). Lorsqu’une des entrées 0 à 7 du circuit
est activée, les 3 sorties donnent la représentation binaire du chiffre octal choisi.
Exemple : entrée 5 active → sortie = 101.
0
1
2
B0
3
B1
4
B2
5
6
7
0 1 2 3 4 5 6 7 B2 B1 B0
1 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0
0 0 1 0 0 0 0 0
0 0 0 1 0 0 0 0
0 0 0 0 1 0 0 0
0 0 0 0 0 1 0 0
0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 1
Circuit logique :
D Q
Clk Q
IN D Q D Q D Q D Q
S0 S1 S2 S3
D Q D Q D Q D Q
S0 S1 S2 S3
5. Si l’état initial (T0) du circuit représenté ci-dessous est S0S1S2 = 000, quel sera son état aux
instants suivants T1, T2, T3, … ?
D Q D Q D Q
S0 S1 S2
𝑸𝟎 𝑸𝟏 𝑸𝟐
T+1 →
T0 0 0 0
T1
T2
T3
T4
T5
T6
T7
6. Si l’état initial (T0) du circuit représenté ci-dessous est S0S1S2 = 000, quel sera son état aux
instants suivants T1, T2, T3, … ?
D Q D Q D Q
S0 S1 S2
𝑸𝟎 𝑸𝟏 𝑸𝟐
T+1 →
T0 0 0 0
T1
T2
T3
T4
T5
T6
T7
7. Si l’état initial (T0) du circuit représenté ci-dessous est S0S1S2 = 000, quel sera son état aux
instants suivants T1, T2, T3, … ?
D Q D Q D Q
S0 S1 S2
𝑸𝟎 𝑸𝟏 𝑸𝟐
T+1 →
T0 0 0 0
T1
T2
T3
T4
T5
T6
T7
8. Considérons une bascule D dont le changement d'état est synchronisé sur une transition
montante du signal d'horloge :
D Q
Clk
𝑻𝟎 𝑻𝟏 𝑻𝟐 𝑻𝟑 𝑻𝟒 𝑻𝟓 𝑻𝟔 𝑻𝟕 𝑻𝟖 𝑻𝟗 𝑻𝟏𝟎
0
9. Considérons une bascule D dont le changement d'état est synchronisé sur une transition
descendante du signal d'horloge :
𝑻𝟎 𝑻𝟏 𝑻𝟐 𝑻𝟑 𝑻𝟒 𝑻𝟓 𝑻𝟔 𝑻𝟕 𝑻𝟖 𝑻𝟗 𝑻𝟏𝟎
1
5 L’unité centrale de
5 traitement (CPU)
b. lw $t0, 25($s0)
c. sw $t0, 25($s0)
66 Les mémoires
6.5 Mémoire cache (antémémoire)
1. Soit une mémoire cache à correspondance directe.
• La mémoire cache comporte 6 lignes.
• L'état initial de la mémoire est indiqué dans la colonne « Init ».
Indiquez dans chaque colonne du tableau le contenu de la mémoire cache après avoir
demandé un accès au bloc mémoire dont le numéro figure au-dessus de la colonne.
18 27 3 11 22 29 15 25 13 1
Ligne Init ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
0 30
1 7
2 -
3 9
4 -
5 -
2. Soit une mémoire cache associative par ensemble qui utilise un algorithme de remplacement
circulaire.
• La mémoire cache comporte 4 ensembles (sets) de 2 lignes chacun.
• L’état initial de la mémoire cache est indiqué dans la colonne « Init ».
Indiquez dans chaque colonne du tableau le contenu de la mémoire cache après avoir
demandé un accès au bloc mémoire dont le numéro figure au-dessus de la colonne.
22 23 20 21 17 16 20 25 29 17
Set Init ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
4
0
-
17
1
-
18
2
-
19
3
-
11 17 28 29 7 17 31 12 18 14
Ligne Init ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
0 22
1 12
2 7
3 55
4 37
5 -
1. Histoire de l’informatique
1.1 Des nombres et des hommes
1. Donner le nom du système de numération et calculer la valeur décimale des nombres suivants :
a. 10102 binaire = 1x23 + 1x21 = 8 + 2 = 1010
b. 420315 quinaire = 4x54 + 2x53 + 3x51 + 1x50 = 4x625 + 2x125 + 3x5 + 1x1 = 276610
c. 1237 septénaire = 1x72 + 2x71 + 3x70 = 1x49 + 2x7 + 3x1 = 6610
d. 7778 octal = 7x82 + 7x81 +7x80 = 7x64 + 7x8 + 7x1 = 51110
e. 1234512 duodécimal = 1x124 + 2x123 + 3x122 + 4x121 + 5x120
= 1x20736 + 2x1728 + 3x144 + 4x12 + 5x1 = 2467710
0000, 0001,
0010, 0011,
0100, 0101,
0110, 0111,
1000, 1001,
1010, 1011,
1100, 1101,
1110, 1111.
2. Compter de 0 à 15 en base 5.
Base 5 -> symboles de la base {0, 1, 2, 3, 4}.
3. Compter de 0 à 15 en octal.
Base 8 -> symboles de la base {0, 1, 2, 3, 4, 5, 6, 7}.
Réponse : 17610 = 101100002 Attention à ne pas oublier les 4 derniers chiffres qui valent 0 !
Réponse : 287610 = 1011001111002 Attention à ne pas oublier les 2 derniers chiffres qui valent 0 !
La plus grande puissance de 3 ≤ 12345 est 38 = 6561 → le nombre final comporte 9 chiffres
(puissances de 3 de 38 à 30).
Réponse : 1234510 = 1212210203 Attention à ne pas oublier le dernier chiffre qui vaut 0 !
La plus grande puissance de 8 ≤ 513 est 83 = 512 → le nombre final comporte 4 chiffres
(puissances de 8 de 83 à 80).
Une autre méthode plus rapide est de constater que 513 = 512+1, c’est-à-dire 83+1 = 10008 + 18 =
10018
Réponse : 201610 = 37408 Attention à ne pas oublier le dernier chiffre qui vaut 0 !
La plus grande puissance de 16 ≤ 456789 est 164 = 65536 → le nombre final comporte 5 chiffres
(puissances de 16 de 164 à 160).
Réponse : 4377610 = AB0016 Attention à ne pas oublier les 2 derniers chiffres qui valent 0 !
• 816 / 2 → Q = 408 R = a0 = 0
• 408 / 2 → Q = 204 R = a1 = 0
• 204 / 2 → Q = 102 R = a2 = 0
• 102 / 2 → Q = 51 R = a3 = 0
• 51 / 2 → Q = 25 R = a4 = 1
• 25 / 2 → Q = 12 R = a5 = 1
• 12 / 2 → Q=6 R = a6 = 0
• 6/2 → Q=3 R = a7 = 0
• 3/2 → Q=1 R = a8 = 1
• 1/2 → Q=0 R = a9 = 1
Pour convertir du binaire vers une base B = 2n, on découpe le nombre binaire en tronçons de n bits
en allant de la droite vers la gauche. Chaque tronçon correspond à un chiffre en base B. Il faut
éventuellement compléter le dernier tronçon de gauche avec des 0.
Pour convertir entre deux bases B et B’ qui sont des puissances de 2, on procède en deux étapes :
1. Conversion de la base B vers le binaire.
2. Conversion du binaire vers la base B’.
2. Quelle est la valeur du plus grand nombre naturel représentable sur 16 bits ?
Réponse : 216-1 = 65535
3. Si je souhaite représenter les nombres naturels de 0 à 63, de combien de bits ai-je besoin ?
Réponse : 64 nombres → Il faut 6 bits, car 26 = 64.
6. Quelle est la caractéristique de la représentation interne binaire de tous les nombres naturels
qui sont des multiples de 8 (0, 8, 16, 24, …, 800, …, 8000, …, 36504, …) ?
Réponse : les 3 bits de poids faible, c’est-à-dire les 3 bits situés à droite, valent toujours 0.
Cela est dû au fait que 8 = 23 = 10002 Tous les multiples de 8 sont donc des multiples de 10002, ce
qui donnera toujours 0 dans les 3 derniers bits.
Réponse : Le plus grand multiple de 32 est 1111 1111 1110 00002 = 6550410
a. Que se passe-t-il si on décale tous les bits de cette représentation d’une position vers la
droite ?
b. Que se passe-t-il si on décale tous les bits de cette représentation d’une position vers la
gauche ?
10. Considérons un circuit mémoire de 64K (64x1024 octets). Pour que chaque octet soit accessible
au moyen d’une adresse mémoire unique, de combien d’adresses avons-nous besoin ? Quelle
sera la taille (minimale) en bits d’une adresse ?
Réponse : 64x1024 = 65536 = 216 → adresses sur 16 bits.
11. On décide de diviser cette mémoire en 64 blocs de 1024 octets qui se suivent en mémoire. Les
blocs sont numérotés de 0 à 63, les octets au sein de chaque bloc de 0 à 1023. Le bloc 0
commence à l’adresse 0, le bloc 1 à l’adresse 1024, le bloc 2 à l’adresse 2048, etc.
a. Quelle est l’adresse de l’octet 723 du bloc 45 ?
Réponse : il y a 64 (= 26) blocs de 1024 (= 210) octets. Le numéro du bloc est le quotient
de la division entière de l’adresse par 1024, il s’obtient directement en gardant les 6
premiers bits (15 - 10) de l’adresse. Le numéro de l’octet est le reste de la division par
1024, il s’obtient en gardant les 10 derniers bits de l’adresse.
Exemple : considérons l’octet dont l’adresse vaut 1332210 = 0011 0100 0000 10102
12. Dans le système RGB (Red/Green/Blue), une couleur est représentée par un triplet de nombres
compris entre 0 et 255 (8 bits) qui indiquent l’intensité de chaque couleur de base pour obtenir
la couleur composée. Ainsi, le triplet (153, 51, 255) représente une nuance de mauve. On peut
également représenter le code couleur par un nombre hexadécimal de 6 chiffres (2 chiffres
hexa par composante). Pour notre nuance de mauve, cela donne 0x9933FF (=9933FF16).
a. Calculer le code hexadécimal de la couleur RGB(57, 122, 206).
15971855 10 = F3B60F16
1. Calculer la représentation binaire sur 8 bits en signe et valeur absolue des nombres suivants :
a. 108 0110 11002 signe positif → premier bit = 0
b. -108 1110 11002 signe négatif → premier bit = 1
c. -127 +127 = 0111 1112 → -127 = 1111 11112
d. -1 +1 = 0000 00012 → -1 = 1000 00012
e. -128 impossible sur 8 bits [-127, +127]
2. Calculer la valeur décimale des nombres binaires suivants, sachant qu’ils sont représentés en
signe et valeur absolue :
a. 01010101 signe positif / 10101012 = 8510 → +85
b. 11010101 signe négatif / 10101012 = 8510 → -85
c. 11100011 signe négatif / 11000112 = 9910 → -99
3.4.3.2 Complément à 1
Dans la représentation en complément à 1, ou complément logique, on utilise également le bit le
plus significatif comme bit de signe. Par contre, pour passer d’un nombre positif à un nombre
négatif, on inverse également tous les bits représentant la valeur absolue du nombre.
2. Calculer la valeur décimale des nombres binaires suivants, sachant qu’ils sont représentés en
complément à 1 :
a. 01010101 signe positif / 010101012 = 8510 → +85
b. 11010101 signe négatif, on inverse tous les bits / 001010102 = 4210 → -42
c. 11100011 signe négatif, on inverse tous les bits / 000111002 = 2810 → -28
3.4.3.3 Complément à 2
Le complément à 2, ou complément arithmétique, s’obtient en ajoutant +1 à la valeur du
complément à 1. Méthode rapide : on recopie tous les bits du nombre positif en commençant par la
droite jusqu’au premier 1 inclus, après quoi on inverse tous les bits qui suivent.
2. Calculer la valeur décimale des nombres binaires suivants, sachant qu’ils sont représentés en
complément à 2 :
a. 01010101 signe positif / 010101012 = 8510 → +85
b. 11010101 signe négatif, complément à 2 / 001010112 = 4310 → -43
c. 11100011 signe négatif, complément à 2 / 000111012 = 2910 → -29
3. Exercice récapitulatif 1 – calculer la représentation binaire sur 8 bits des nombres suivants :
a. 91 → 01011011
b. -91 en signe et valeur absolue → 10011011
c. -91 en complément à 1 → 10100100
d. -91 en complément à 2 → 10100101
Pour soustraire un nombre, il suffit juste d’additionner son complément. On additionne tous les
chiffres et on laisse tomber le report final éventuel. Un dépassement de capacité est détecté par le
fait que la retenue générée sur le bit de signe est différente de celle générée sur le bit juste avant.
5. Réaliser les opérations suivantes en arithmétique binaire sur 8 bits en complément à 2. Vérifier
si le résultat binaire obtenu correspond bien à la valeur attendue.
a. 5 + 122 = 127
00000000
5 00000101
+122 +01111010
127 01111111 = +127
b. 122 + 64 = 186
01000000
122 01111010
+ 64 +01000000
186 10111010 = -70 → dépassement de capacité !
c. 64 - 96 = -32
00000000
64 01000000
-96 +10100000
-32 11100000 = -32
d. -96 - 32 = -128
11100000
-96 10100000
-32 +11100000
-128 10000000 = -128
e. -96 - 64 = -160
10000000
-96 10100000
-64 +11000000
-160 01100000 = +96 → dépassement de capacité !
1. Calculer la représentation binaire sur 8 bits des nombres suivants en utilisant un biais de +127 :
a. 32 32 + 127 = 159 → 100111112
b. -32 -32 + 127 = 95 → 010111112
c. 128 128 + 127 = 255 → 111111112
d. 0 0 + 127 = 127 → 011111112
e. -128 -128 + 127 = -1 → impossible [0, 255]
f. 140 140 + 127 = 267 → impossible [0, 255]
g. -127 -127 + 127 = 0 → 000000002
2. Calculer la valeur effective des nombres binaires suivants, sachant qu’un biais de +127 est
utilisé :
a. 10000100 = 13210 → 132 - 127 = 5
b. 11111010 = 25010 → 250 - 127 = 123
c. 00001111 = 1510 → 15 - 127 = -112
d. 00000000 = 010 → 0 - 127 = -127
e. 10101010 = 17010 → 170 - 127 = 43
SM EXPOSANT MANTISSE
où
Rappel : la forme normalisée d’un nombre réel binaire définie par le standard IEEE 754 s’obtient en
ajustant l’exposant de telle sorte que la partie entière de la mantisse soit égale à 1. La seule
exception est le nombre 0 qui est représenté par un mot mémoire dont tous les bits sont à 0.
La technique du contrôle de parité consiste à ajouter un bit supplémentaire, appelé bit de parité, aux
données à protéger. La valeur du bit de parité est calculée de manière à ce que le nombre total de
bits à 1 soit pair (parité paire) ou impair (parité impaire).
1. Calculer le bit de parité paire/impaire pour chaque lettre du mot « LOVE » codé en ASCII sur 7
bits.
• L 76 1001100 PP=1 PI=0
• O 79 1001111 PP=1 PI=0
• V 86 1010110 PP=0 PI=1
• E 69 1000101 PP=1 PI=0
2. Déterminer le mot codé en ASCII sur 7 bits qui correspond au tableau de double parité suivant.
On suppose que les lignes utilisent une parité impaire (PI) et les colonnes une parité paire (PP).
On constate que le bit de parité impaire n’est pas correct pour les lignes 1, 3 et 5.
De même, le bit de parité paire n’est pas correct pour la colonne b4.
On a donc plusieurs erreurs localisées dans une seule colonne.
Pour rétablir des parités correctes, il faut inverser le bit 4 dans les lignes 1, 3 et 5
Car. Code b6 b5 b4 b3 b2 b1 b0 PI
H 72 1 0 1→0 1 0 0 0 1
E 69 1 0 0 0 1 0 1 0
L 76 1 0 1→0 1 1 0 0 0
M 77 1 0 0 1 1 0 1 1
o 111 1 1 1→0 1 1 1 1 1
PP 1 1 0 0 0 1 1
Réponse : HELMo
Si on numérote les bits du code de Hamming de droite à gauche en commençant par 1, les bits de
contrôle sont ceux dont le numéro correspond à une puissance de 2, à savoir : 1, 2, 4, 8, 16, …
La longueur totale maximale du message protégé par un code de Hamming contenant k bits de
contrôle est m = 2k-1, avec m = d + k (d = taille des données, k = nombre de bits de contrôle).
k 2k mmax dmax
1 2 1 0
2 4 3 0
3 8 7 4
4 16 15 11
5 32 31 26
6 64 63 57
7 128 127 120
Par exemple, avec k = 3 bits de parité, la taille maximale du message est de m = 7 bits, soit un
maximum de d = 4 bits de données.
7 6 5 4 3 2 1
d4 d3 d2 k3 d1 k2 k1
La méthode rapide pour calculer les bits de parité d’un code de Hamming consiste à :
1. Identifier les bits de données qui valent 1.
2. Exprimer leurs positions en binaire sur k bits.
3. Calculer la valeur du bit de parité (paire ou impaire) de chaque colonne.
1. Calculer le code de Hamming à parité impaire pour transmettre les données suivantes :
a. 111
6 5 4 3 2 1
d3 d2 k3 d1 k2 k1
1 1 k3 1 k2 k1
Calcul des bits de contrôle :
6 110
5 101
3 011
000 = parité paire
111 = parité impaire
Réponse : 111111
b. 1001
7 6 5 4 3 2 1
d4 d3 d2 k3 d1 k2 k1
1 0 0 k3 1 k2 k1
Calcul des bits de contrôle :
7 111
3 011
100 = parité paire
011 = parité impaire
Réponse : 1000111
c. 11001100
12 11 10 9 8 7 6 5 4 3 2 1
d8 d7 d6 d5 k4 d4 d3 d2 k3 d1 k2 k1
1 1 0 0 k4 1 1 0 k3 0 k2 k1
12 1100
11 1011
7 0111
6 0110
0110 = parité paire
1001 = parité impaire
Réponse : 110011100001
d. 10101010101
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
d11 d10 d9 d8 d7 d6 d5 k4 d4 d3 d2 k3 d1 k2 k1
1 0 1 0 1 0 1 k4 0 1 0 k3 1 k2 k1
Calcul des bits de contrôle :
15 1111
13 1101
11 1011
9 1001
6 0110
3 0011
0101 = parité paire
1010 = parité impaire
Réponse : 101010110100110
2. Retrouver les données initiales transmises au moyen des codes de Hamming à parité paire
suivants. (Vérifier l’exactitude du code et le corriger si nécessaire.)
a. 0101101
7 6 5 4 3 2 1
d4 d3 d2 k3 d1 k2 k1
0 1 0 1 1 0 1
6 110
3 011
101 = parité paire calculée
101 = parité paire reçue → OK
→ Le code de Hamming est correct.
Réponse : 0101
b. 1011111
7 6 5 4 3 2 1
d4 d3 d2 k3 d1 k2 k1
1 0 1 1 1 1 1
Calcul des bits de contrôle :
7 111
5 101
3 011
001 = parité paire calculée
111 = parité paire reçue → NOK
110 = numéro du bit en erreur = 610
Réponse : 1111
c. 1100010000
10 9 8 7 6 5 4 3 2 1
d6 d5 k4 d4 d3 d2 k3 d1 k2 k1
1 1 0 0 0 1 0 0 0 0
Calcul des bits de contrôle :
10 1010
9 1001
5 0101
0110 = parité paire calculée
0000 = parité paire reçue → NOK
0110 = numéro du bit en erreur = 610
Réponse : 110110
d. 111110001111111
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
d11 d10 d9 d8 d7 d6 d5 k4 d4 d3 d2 k3 d1 k2 k1
1 1 1 1 1 0 0 0 1 1 1 1 1 1 1
Calcul des bits de contrôle :
15 1111
14 1110
13 1101
12 1100
11 1011
7 0111
6 0110
5 0101
3 0011
1100 = parité paire calculée
0111 = parité paire reçue → NOK
1011 = numéro du bit en erreur = 1110
Réponse : 11110001111
3. Déterminez les 2 formes normales de la fonction F() donnée par la table de vérité suivante.
A B C F()
0 0 0 0
0 0 1 1 FN1 (somme de mintermes) :
0 1 0 0 𝐴. 𝐵. 𝐶 + 𝐴. 𝐵. 𝐶 + 𝐴. 𝐵. 𝐶 + 𝐴. 𝐵. 𝐶 + 𝐴. 𝐵. 𝐶
0 1 1 1
1 0 0 1 FN2 (produit de maxtermes) :
1 0 1 1 (𝐴 + 𝐵 + 𝐶) . (𝐴 + 𝐵 + 𝐶) . (𝐴 + 𝐵 + 𝐶)
1 1 0 1
1 1 1 0
4. Déterminez les 2 formes normales de la fonction F() donnée par la table de vérité suivante.
A B C F()
0 0 0 1
0 0 1 1 FN1 (somme de mintermes) :
0 1 0 0 𝐴. 𝐵. 𝐶 + 𝐴. 𝐵. 𝐶 + 𝐴. 𝐵. 𝐶 + 𝐴. 𝐵. 𝐶 + 𝐴. 𝐵. 𝐶
0 1 1 1
1 0 0 0 FN2 (produit de maxtermes) :
1 0 1 1 (𝐴 + 𝐵 + 𝐶) . (𝐴 + 𝐵 + 𝐶) . (𝐴 + 𝐵 + 𝐶)
1 1 0 0
1 1 1 1
FN1 FN2
ABC A+B+C
A A
ABC A+B+C
B B
MAJ MAJ
ABC A+B+C
C C
ABC A+B+C
6. Considérons la fonction de 3 variables « parité paire », c’est-à-dire une fonction F(a,b,c) dont la
valeur vaut 1 lorsqu’un nombre impair des trois variables a, b, c valent 1.
a. Déterminer la table de vérité de cette fonction.
b. Déterminer la première forme normale de cette fonction.
c. Dessiner le circuit générique (=non optimisé) qui correspond à la première forme
normale.
a b c PP FN1
0 0 0 0
0 0 1 1
0 1 0 1
0 1 1 0
FN1 = (a̅b̅c) + (a̅bc̅) + (ab̅c̅) + (abc)
1 0 0 1
1 0 1 0
1 1 0 0
1 1 1 1
ABC ABC
ABC
ABC
B
PP
ABC
C
ABC
7. Considérons la fonction de 3 variables « parité impaire », c’est-à-dire une fonction F(a,b,c) dont
la valeur vaut 1 lorsqu’un nombre pair des trois variables a, b, c valent 1.
a. Déterminer la table de vérité de cette fonction.
b. Déterminer la deuxième forme normale de cette fonction.
c. Dessiner le circuit générique (=non optimisé) qui correspond à la 2éme forme normale.
a b c PI FN2
0 0 0 1
0 0 1 0
0 1 0 0
0 1 1 1
FN2 = (a + b + c̅)(a + b̅ + c)(a̅ + b + c)(a̅ + b̅ + c̅)
1 0 0 0
1 0 1 1
1 1 0 1
1 1 1 0
ABC ABC
A+B+C
A+B+C
B
PI
A+B+C
C
A+B+C
a b 𝒂+𝒃 ̅+𝒃
𝒂 ̅ F
A
0 0 0 1 0
B
0 1 1 1 1
1 0 1 1 1
1 1 1 0 0
→ 𝐹(𝑎, 𝑏) = 𝑎 ⊕ 𝑏 → XOR
T1 T2 T3
A
a b 𝒂⊕𝒃 ̅𝒃
𝒂 T1+T2 F
0 0 1 0 1 1
0 1 0 1 1 1
1 0 0 0 0 1
1 1 1 0 1 1
B
→ 𝐹(𝑎, 𝑏) = 1 → constante 1
A
B
F
C
A B C F()
0 0 0 1
0 0 1 1
0 1 0 1
0 1 1 1
1 0 0 1
1 0 1 0
1 1 0 1
1 1 1 0
A
B
F
C
A B C F()
0 0 0 0
0 0 1 0
0 1 0 0
0 1 1 0
1 0 0 1
1 0 1 0
1 1 0 1
1 1 1 1
ABC
ABC
𝐹(𝑎, 𝑏, 𝑐) = ((𝑎 𝑛𝑜𝑟 𝑏). c) + ((𝑎 𝑛𝑜𝑟 𝑐). 𝑏) + 𝑎. ((𝑏 𝑛𝑜𝑟 𝑐) + (𝑏. 𝑐))
T1 x T2 x T3 T4 T5 x
a b c a nor b T1.c a nor c T2.b b nor c b.c T3+T4 a.T5 F
0 0 0 1 0 1 0 1 0 1 0 0
0 0 1 1 1 0 0 0 0 0 0 1
0 1 0 0 0 1 1 0 0 0 0 1
0 1 1 0 0 0 0 0 1 1 0 0
1 0 0 0 0 0 0 1 0 1 1 1
1 0 1 0 0 0 0 0 0 0 0 0
1 1 0 0 0 0 0 0 0 0 0 0
1 1 1 0 0 0 0 0 1 1 1 1
a
a.b
𝑎. 𝑏 = (𝑎. 𝑏) = (𝑎 + 𝑏) b
𝑎 𝑛𝑜𝑟 𝑏 = 𝑎 + 𝑏 = 𝑎. 𝑏 = 𝑎. 𝑏 = (𝑎. 𝑏)
a
a
a.b
a.b
b
b
16. Considérons une fonction logique de 4 variables dont la valeur vaut 1 lorsque (exactement) 2
des 4 variables d’entrée valent 1.
a. Construire la table de vérité de cette fonction.
Attention à l’ordre des lignes de la table de vérité : il doit correspondre à l’énumération des
valeurs binaires des nombres de 0 à 15.
A B C D F()
0 0 0 0 0 0
1 0 0 0 1 0
2 0 0 1 0 0
3 0 0 1 1 1
4 0 1 0 0 0
5 0 1 0 1 1
6 0 1 1 0 1
7 0 1 1 1 0
8 1 0 0 0 0
9 1 0 0 1 1
10 1 0 1 0 1
11 1 0 1 1 0
12 1 1 0 0 1
13 1 1 0 1 0
14 1 1 1 0 0
15 1 1 1 1 0
ABC D ABC D
e. Proposer un circuit plus simple qui n’utilise que des portes ET, OU, XOR à 2 entrées et NON.
FN1 = 𝐴̅𝐵̅𝐶𝐷 + 𝐴̅𝐵𝐶̅ 𝐷 + 𝐴̅𝐵𝐶𝐷
̅ + 𝐴𝐵̅𝐶̅ 𝐷 + 𝐴𝐵̅𝐶𝐷
̅ + 𝐴𝐵𝐶̅ 𝐷
̅
A
B
C
D
17. Soit A3A2A1A0 un code BCD et F(A3, A2, A1, A0) une fonction logique qui permet de détecter que
A3A2A1A0 est un code BCD invalide (F vaut 1 si le code est invalide).
a. Construire la table de vérité de la fonction logique F(A3, A2, A1, A0).
A3 A2 A1 A0 F()
0 0 0 0 0 0
1 0 0 0 1 0
2 0 0 1 0 0
3 0 0 1 1 0
4 0 1 0 0 0
5 0 1 0 1 0
6 0 1 1 0 0
7 0 1 1 1 0
8 1 0 0 0 0
9 1 0 0 1 0
10 1 0 1 0 1
11 1 0 1 1 1
12 1 1 0 0 1
13 1 1 0 1 1
14 1 1 1 0 1
15 1 1 1 1 1
= 𝐴3 ̅̅̅
𝐴2 𝐴1 + 𝐴3 𝐴2 ̅̅̅
𝐴1 + 𝐴3 𝐴2 𝐴1
̅̅̅2 𝐴1 + 𝐴2 ̅̅̅
= 𝐴3 (𝐴 𝐴1 + 𝐴2 𝐴1 )
̅̅̅2 𝐴1 + 𝐴2 (𝐴
= 𝐴3 (𝐴 ̅̅̅1 + 𝐴1 ))
̅̅̅2 𝐴1 + 𝐴2 )
= 𝐴3 (𝐴
̅̅̅2 + 𝐴2 ). (𝐴1 + 𝐴2 ))
= 𝐴3 ((𝐴
= 𝐴3 (𝐴2 + 𝐴1 )
Autre possibilité en observant la table de vérité : F = 𝐴3 𝐴2 + 𝐴3 𝐴1 → CODE 11xx OU 1x1x
A3
A2
A3
A2
A1 A1
A
B
F
C
19. Déterminez la table de vérité des fonctions 𝑭𝟏 et 𝑭𝟐 dont on vous donne une des deux formes
normales. En déduire, l’autre forme normale
𝐹1 = 𝐴̅. 𝐵̅. 𝐶̅ + 𝐴̅. 𝐵. 𝐶̅ + 𝐴. 𝐵̅. 𝐶̅ + 𝐴. 𝐵. 𝐶̅ Forme normale : 1
A B C F1() F2()
0 0 0 1 1
0 0 1 0 1
0 1 0 1 1
0 1 1 0 1
1 0 0 1 0
1 0 1 0 0
1 1 0 1 0
1 1 1 0 1
L’opérateur logique XNOR vaut 1 lorsque a et b sont égaux, l’opérateur XOR vaut 1 lorsque a et b
sont différents.
a b xnor xor
0 0 1 0
0 1 0 1
1 0 0 1
1 1 1 0
Nous pouvons donc tester l’égalité de a et b avec une porte XNOR, ou encore avec une porte XOR
et un inverseur NOT.
a a
a=b a=b
b b
Pour tester l’égalité d’un nombre de n bits, il faut que les bits correspondants soient égaux 2 à 2.
C’est-à-dire, pour 2 nombres de 4 bits : a0 = b0 ET a1 = b1 ET a2 = b2 ET a3 = b3.
a0
a0
b0
b0
a1 a1
b1 b1
A=B A=B
a2 a2
b2 b2
a3 a3
b3 b3
VCC
D0
a b NOR
D1
0 0 1
A B
0 1 0
D2
1 0 0
1 1 0
D3
A B
b. XOR
VCC
D0
a b XOR
D1
0 0 0
A⊕B
0 1 1
D2
1 0 1
1 1 0
D3
A B
c. Majorité de 3 variables
VCC
a b c MAJ D0
0 0 0 0 D1
0 0 1 0 D2
0 1 0 0 D3
Maj(A, B, C)
0 1 1 1 D4
1 0 0 0 D5
1 0 1 1 D6
1 1 0 1 D7
1 1 1 1
A B C
3. Réaliser un codeur octal vers binaire. Il s’agit d’un circuit avec 8 entrées numérotées de 0 à 7
(les 8 chiffres valides en octal) et 3 sorties (B0, B1, B2). Lorsqu’une des entrées 0 à 7 du circuit
est activée, les 3 sorties donnent la représentation binaire du chiffre octal choisi.
Exemple : entrée 5 active → sortie = 101.
0
1
2
B0
3
B1
4
B2
5
6
7
0 1 2 3 4 5 6 7 B2 B1 B0
1 0 0 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0 1
0 0 1 0 0 0 0 0 0 1 0
0 0 0 1 0 0 0 0 0 1 1
0 0 0 0 1 0 0 0 1 0 0
0 0 0 0 0 1 0 0 1 0 1
0 0 0 0 0 0 1 0 1 1 0
0 0 0 0 0 0 0 1 1 1 1
0 1 2 3 4 5 6 7
B0
B1
B2
D Q
Clk Q
Clk
Q/D
À chaque transition montante du signal d’horloge, l’état de la bascule s’inverse, car l’entrée D est
connectée à 𝑄 ⇒ 0, 1, 0, 1, 0, 1, etc. La sortie du circuit vaut donc 0 (ou 1) tous les deux cycles
d’horloge.
Si on utilise ce signal de sortie comme signal d’horloge pour un deuxième circuit similaire à celui
de l’exercice 1, l’état de la deuxième bascule va lui aussi passer alternativement de 0 à 1 à
chaque cycle complet de la première bascule, c’est-à-dire deux fois plus lentement. Le signal de
sortie de la deuxième bascule aura donc une fréquence qui est le quart de celle de l’horloge.
Pour obtenir un compteur, il faut que la deuxième bascule change d’état chaque fois que la
première passe de l’état 𝑄 = 1 à l’état 𝑄 = 0 (Note : la sortie 𝑄̅ passe quant à elle de 0 à 1).
Comme nous utilisons des bascules D qui changent d’état lors d’une transition montante du
signal d’horloge, nous devons donc utiliser 𝑄̅ comme signal d’horloge pour la bascule suivante.
Il suffit de mettre en série quatre circuits pour obtenir un compteur d’impulsions sur 4 bits.
D Q D Q D Q D Q
C0 C1 C2 C3
C0 C1 C2 C3
0 0 0 0 0
1 1 0 0 0
2 0 1 0 0
3 1 1 0 0
4 0 0 1 0
5 1 0 1 0
6 0 1 1 0
7 1 1 1 0
8 0 0 0 1
9 1 0 0 1
10 0 1 0 1
11 1 1 0 1
12 0 0 1 1
13 1 0 1 1
14 0 1 1 1
15 1 1 1 1
IN D Q D Q D Q D Q
S0 S1 S2 S3
À chaque impulsion de l’horloge, les données contenues dans le registre sont décalées d’un bit
vers la droite : IN → S0 → S1 → S2 → S3
D Q D Q D Q D Q
S0 S1 S2 S3
Il s’agit d’une variante du registre à décalage dans laquelle le signal d’entrée de la première
bascule est égal au signal Q̅ de la dernière. Si on démarre dans l’état 0000, on obtient la
séquence suivante :
5. Si l’état initial (T0) du circuit représenté ci-dessous est Q0Q1Q2 = 000, quel sera son état aux
instants suivants T1, T2, T3, … ?
D Q D Q D Q
S0 S1 S2
𝑸𝟎 𝑸𝟏 𝑸𝟐
T+1 → = 𝑸𝟐 = 𝑸𝟎 = 𝑸𝟏
T0 0 0 0
T1 0 1 0
T2 0 1 1
T3 1 1 1
T4 1 0 1
T5 1 0 0
T6 0 0 0
T7 0 1 0
6. Si l’état initial (T0) du circuit représenté ci-dessous est Q0Q1Q2 = 000, quel sera son état aux
instants suivants T1, T2, T3, … ?
D Q D Q D Q
S0 S1 S2
𝑸𝟎 𝑸𝟏 𝑸𝟐
T+1 → = 𝑸𝟐 = 𝑸𝟎 = 𝑸𝟏
T0 0 0 0
T1 1 0 1
T2 0 1 1
T3 0 0 0
T4 1 0 1
T5 0 1 1
T6 0 0 0
T7 1 0 1
7. Si l’état initial (T0) du circuit représenté ci-dessous est Q0Q1Q2 = 000, quel sera son état aux
instants suivants T1, T2, T3, … ?
D Q D Q D Q
S0 S1 S2
𝑸𝟎 𝑸𝟏 𝑸𝟐
T+1 → = 𝑸𝟐 = 𝑸𝟎 + 𝑸𝟐 = 𝑸𝟏
T0 0 0 0
T1 0 1 1
T2 1 1 0
T3 0 0 0
T4 0 1 1
T5 1 1 0
T6 0 0 0
T7 0 1 1
8. Considérons une bascule D dont le changement d'état est synchronisé sur une transition
montante du signal d'horloge :
D Q
Clk
𝑻𝟎 𝑻𝟏 𝑻𝟐 𝑻𝟑 𝑻𝟒 𝑻𝟓 𝑻𝟔 𝑻𝟕 𝑻𝟖 𝑻𝟗 𝑻𝟏𝟎
0 0 0 0 0 1 1 0 0 0 0
9. Considérons une bascule D dont le changement d'état est synchronisé sur une transition
descendante du signal d'horloge :
𝑻𝟎 𝑻𝟏 𝑻𝟐 𝑻𝟑 𝑻𝟒 𝑻𝟓 𝑻𝟔 𝑻𝟕 𝑻𝟖 𝑻𝟗 𝑻𝟏𝟎
1 1 0 0 0 0 1 1 1 1 1
5. L’unité centrale de
traitement (CPU)
5.2 Code machine et langage d’assemblage
1. Déterminer le code machine binaire et hexadécimal des instructions suivantes :
(Note : les constantes sont représentées en complément à 2 sur 16 bits.)
a. addi $t0, $t1, 50
[FORMAT I]
OP:6-- RS:5- RT:5- CST:16----------
8 9 8 50
001000 01001 01000 0000000000110010
0010 0001 0010 1000 0000 0000 0011 0010
HEXA = 0x21280032
b. lw $t0, 25($s0)
[FORMAT I]
OP:6-- RS:5- RT:5- CST:16----------
35 16 8 25
100011 10000 01000 0000000000011001
1000 1110 0000 1000 0000 0000 0001 1001
HEXA = 0x8E080019
c. sw $t0, 25($s0)
[FORMAT I]
OP:6-- RS:5- RT:5- CST:16----------
43 16 8 25
101011 10000 01000 0000000000011001
1010 1110 0000 1000 0000 0000 0001 1001
HEXA = 0xAE080019
6. Les mémoires
6.5 Mémoire cache (antémémoire)
1. Soit une mémoire cache à correspondance directe.
• La mémoire cache comporte 6 lignes.
• L'état initial de la mémoire est indiqué dans la colonne « Init ».
Indiquez dans chaque colonne du tableau le contenu de la mémoire cache après avoir
demandé un accès au bloc mémoire dont le numéro figure au-dessus de la colonne.
18 27 3 11 22 29 15 25 13 1
Ligne Init ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
0 30 18 18 18 18 18 18 18 18 18 18
1 7 7 7 7 7 7 7 7 25 13 1
2 - - - - - - - - - - -
3 9 9 27 3 3 3 3 15 15 15 15
4 - - - - - 22 22 22 22 22 22
5 - - - - 11 11 29 29 29 29 29
2. Soit une mémoire cache associative par ensemble qui utilise un algorithme de remplacement
circulaire.
• La mémoire cache comporte 4 ensembles (sets) de 2 lignes chacun.
• L’état initial de la mémoire cache est indiqué dans la colonne « Init ».
Indiquez dans chaque colonne du tableau le contenu de la mémoire cache après avoir
demandé un accès au bloc mémoire dont le numéro figure au-dessus de la colonne.
22 23 20 21 17 16 20 25 29 17
Set Init ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
4 4 4 4 4 4 16 16 16 16 16
0
- - - 20 20 20 20 20 20 20 20
17 17 17 17 17 17 17 17 25 25 17
1
- - - - 21 21 21 21 21 29 29
18 18 18 18 18 18 18 18 18 18 18
2
- 22 22 22 22 22 22 22 22 22 22
19 19 19 19 19 19 19 19 19 19 19
3
- - 23 23 23 23 23 23 23 23 23
11 17 28 29 7 17 31 12 18 14
Ligne Init ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
0 22 22 17 17 17 17 17 17 17 18 18
1 12 12 12 28 28 28 28 28 28 28 14
2 7 7 7 7 29 29 29 29 29 29 29
3 55 55 55 55 55 7 7 7 7 7 7
4 37 37 37 37 37 37 37 31 31 31 31
5 - 11 11 11 11 11 11 11 12 12 12
Nombres de 0 à 15 Puissances de 2, 8 et 16
Décimal Hexa Binaire Octal Binaire n 2n 8n 16n
0 0 0000 0 000 -4 0,0625 0,000244140625 -
1 1 0001 1 001 -3 0,125 0,001953125 0,000244140625
2 2 0010 2 010 -2 0,25 0,015625 0,00390625
3 3 0011 3 011 -1 0,5 0,125 0,0625
4 4 0100 4 100 0 1 1 1
5 5 0101 5 101 1 2 8 16
6 6 0110 6 110 2 4 64 256
7 7 0111 7 111 3 8 512 4.096
8 8 1000 - - 4 16 4.096 65.536
9 9 1001 - - 5 32 32.768 1.048.576
10 A 1010 - - 6 64 262.144 16.777.216
11 B 1011 - - 7 128 2.097.152 268.435.456
12 C 1100 - - 8 256 16.777.216 4.294.967.296
13 D 1101 - - 9 512 134.217.728 68.719.476.736
14 E 1110 - - 10 1.024 1.073.741.824 -
15 F 1111 - - 11 2.048 8.589.934.592 -
12 4.096 68.719.476.736 -
13 8.192 549.755.813.888 -
14 16.384 - -
15 32.768 - -
Code ASCII (7 bits) - extrait 16 65.536 - -