IFT-17583
Structure interne des ordinateurs I
Corrigé de l'examen du 14 novembre 1998.
1. Convertissez :
a. 280.4459 en base 10 (précision 3 chiffres après le point décimal). (10 pts) b. 219.142910 en base 7 (précision 2 chiffres après le point). (10 pts) a. Partie entière 2809 = 2 × 92 + 8 × 91 + 0 × 90 = 23410.
Partie fractionnaire : 0.4459 = 4 × 9-1 + 4 × 9-2 + 5 × 9-3 = 0.500 b. Partie entière 21910
219 / 7 = 31, reste 2 31 / 7 = 4 reste 3
4 / 7 = 0, reste 4 Résultat : 4327 Partie fractionnaire :
0. 1429 × 7 1 .0003 × 7 0 .002 × 7 0. .014 × 7
0. 1 Résultat : 0.1000
Résultat : 432.10007
2. Soit le contenu hexadécimal de deux cellules de 32 bits : BFC00000 et C0900000
a. Si ces deux cellules représentent des nombres de virgule flottante sous forme IEEE 754 et qu'oon les envoie à un co-processeur de virgule flottante pour en faire l'addition, quel sera le résultat décimal en signe
et en valeur absolue ? (15 pts)
b. Si, par erreur, le contenu de ces deux cellules était envoyé à l'UAL comme des nombres entiers signés (complément à 2), quel serait le
résultat en signe et en valeur absolue ? (15 pts)
a. En virgule flottante IEEE, BFC00000 vaut : 1 01111111 100 0000 0000 0000 0000 0000 Le bit de signe est 1, donc le nombre est négatif.
L'exposant biaisé est 01111111 = 127, donc l'exposant vaut 0.
La mantisse normalisée est 1.10000000000000000000000 .
Le premier nombre vaut donc -1,12 × 20 = -1,510. Pour le second nombre C0900000, on a :
1 10000001 001 0000 0000 0000 0000 0000 Le bit de signe est 1, donc le nombre est négatif.
L'exposant biaisé est 10000001 = 129, donc l'exposant vaut 2.
La mantisse normalisée est 1.00100000000000000000000 Le second nombre vaut donc -1,0012× 22 = −4,510
La somme des deux peut s'effectuer en binaire ou en décimal.
En binaire, on a
- 1,001 × 22 - 0,011 × 22 _______________
- 1.10 × 22 = −6,010
b. La somme des deux nombres BFC00000 + C0900000, considérés comme des nomres entiers signées en complément à 2, est (1) 80500000. Si on ne prend que les 32 derniers bits du résultat, sa valeur décimale est -2,152,726,528. Sauf que ce résultat est incorrect car on a laissé tomber la retenue.
En effet, les deux nombres valent :
-1,077,936,128 et le second -1,064,304,640. Leur somme devrait donner : -2,142,240,768.
Ceci est dû au fait que la représentation sur 32 bits en complément à 2 s'étend de -2,147,483,648 à +2,147,483,647.
3. Le code excédent-3 est un code binaire parfois utilisé au lieu du BCD parce qu’il simplifie certaines opérations arithmétiques. Sur quatre bits, on a:
BCD Excédent-3 B3B2B1B0 E3E2E1E0
BCD Excédent-3 B3B2B1B0 E3E2E1E0 0 0 0 0 0 0 1 1 0 1 0 1 1 0 0 0 0 0 0 1 0 1 0 0 0 1 1 0 1 0 0 1 0 0 1 0 0 1 0 1 0 1 1 1 1 0 1 0 0 0 1 1 0 1 1 0 1 0 0 0 1 0 1 1 0 1 0 0 0 1 1 1 1 0 0 1 1 1 0 0
Concevez un traducteur combinatoire pour convertir un nombre BCD de quatre bits (B0 à B3) au code excédent-3 correspondant (E0 à E3): (30 pts)
0 0 0 0 0 1 1 1 x x x x 1 1 x x 00
01 11 10
00 01 11 10 B3B2
B1B0
E3 = B3 + B2B0 + B2B1
0 1 1 1 1 0 0 0 x x x x 0 1 x x 00
01 11 10
00 01 11 10 B3B2
B1B0
0 1 1 1 1 0 0 0 x x x x 0 1 x x 00
01 11 10
00 01 11 10 B3B2
B1B0
E2 = B2B1B0 + B2B0 + B2B1 E2 = B2(B1 + B0) + B2(B1 + B0) E2= B2 ⊕ (B1 + B0)
Pour E0, il n'est pas nécessaire de faire de table, puisqu'on voit que dans tous les cas E0 = B0.
On a finalement le circuit suivant :
B1 B0 B1 B0 B2 B2 B3 B1 B0
E1 E2 E3
E0 B0
4. Quel est le comportement du circuit suivant en supposant qu'initialement Q1Q2= 00, c'est-à-dire quelle est la séquence des états Q1Q2? Justifiez
votre réponse. (20 pts)
1 0 1 0 1 0 1 0 x x x x 1 0 x x 00
01 11 10
00 01 11 10 B3B2
B1B0
E1 = B1B0 + B1B0 E1 = (B1 ⊕ B0)
D2Q2 D1Q1
Ck
Q2 Q1
Suggestion : faites un tableau avec comme en-tête Q2Q1 D2D1 Q2+Q1+. On voit sur le circuit que D2 = Q2 ⊕ Q1 et que D1 = Q1 . On peut donc écrire la table suivante :
Q2Q1 D2D1 Q2+
Q1+
0 0 0 1 0 1
0 1 1 0 1 0
1 0 1 1 1 1
1 1 0 0 0 0
Il s'agit donc d'un compteur modulo-4 ascendant. La suite des états Q2Q1 est 00-01- 10-11-00 ou la suite des états Q1Q2 est 00-10-01-11-00 :
00 01 10 11