You are on page 1of 7

NSY104

Architectures des systèmes informatiques


2009-2010

TD N°1

1. Numérotation en base 2

Donner la représentation binaire des nombres suivants (expliquer) :


- 403
- 2009
- 100
- 22
- 0
- 1
- 128

Corrigé :

Pour donner la représentation en binaire d’un nombre décimal, on divise par 2 jusqu'à obtenir
un reste qui est 0 ou 1 :

403 2
1 201 2
1 100 2
0 50 2
0 25 2
1 12 2
0 62
Sens de la 032
lecture 11

Le résultat est formé par les restes pris dans le sens de la lecture.
Le résultat pour 403 est donc : 110010011

En procédant de même pour les autres valeurs, on obtient :

2009 => 11111011001


100 => 1100100
22 => 10110
0 => 0
1 => 1
128 => 10000000
2. Numérotation en base 16

Donner la représentation hexadécimale des nombres suivants (expliquer):


- 2
- 130
- 5049
- 24567
- 56
- 76
- 674

Corrigé :

Pour donner la représentation hexadécimal d’un nombre décimal, on divise par 16 jusqu'à
obtenir un reste inférieur a 16 :

24567 16
7 1535 16
F 95 16
F 5
Sens de la
lecture
Le résultat est formé par les restes pris dans le sens de la lecture.
Le résultat pour 24567 est donc : 5FF7

En procédant de même pour les autres valeurs, on obtient :

2 => 2 h
130 => 82 h
5049 => 13B9 h
56 => 38 h
76 => 4C h
674 => 2A2 h

3. Conversion

Donner la représentation en hexadécimal des nombres suivants :


- 1010 0000
- 1001 1000 1111
- 0101 1011 1010 1001
Donner la représentation en binaire des nombres suivants :
- 23D2
- 2134
- 3E5A
Corrigé :

Pour effectuer des conversions entre des valeurs binaires et hexadécimales, il est nécessaire de
connaître (par cœur) le tableau suivant :

DECIMAL BINAIRE HEXADECIMAL


0 0000 0h
1 0001 1h
2 0010 2h
3 0011 3h
4 0100 4h
5 0101 5h
6 0110 6h
7 0111 7h
8 1000 8h
9 1001 9h
10 1010 Ah
11 1011 Bh
12 1100 Ch
13 1101 Dh
14 1110 Eh
15 1111 Fh

La conversion devient alors immédiate :

- 1010 0000 => A0 h


- 1001 1000 1111 => 98F h
- 0101 1011 1010 1001 => 5BA9 h

- 23D2 => 0010 0011 1101 0010


- 2134 => 0010 0001 0011 0100
- 3E5A => 0011 1110 0101 1010

4. Complément à 2

Donner le complément à 2 des nombres suivants :


- 1001 0001
- 1010 0100
- 1111 0011
Corrigé :

Pour convertir une valeur binaire en complément à 2, on inverse les bits et on ajoute 1 :

1001 0001 => inversion des bits => 0110 1110 = Ajout de 1 => 0110 1111
1010 0100 => inversion des bits => 0101 1011 = Ajout de 1 => 0101 1100
1111 0011 => inversion des bits => 0000 1100 = Ajout de 1 => 0000 1101

5. Additions en base 2

Effectuer les additions suivantes :


- 1001 0011 + 1001 0000
- 1000 1111 + 0101 1111
- 1001 1000 + 0100 0000

Corrigé :

On procède de la même façon qu’en décimal :

10001 1111111
+ 0101 1 1 1 1
1110 1 1 1 0

En procédant de même pour les autres valeurs, on obtient :

1001 0011 + 1001 0000 = 1 0010 0011


1000 1111 + 0101 1111 = 1110 1110
1001 1000 + 0100 0000 = 1101 1000

6. Représentation de nombres négatifs

Donner les valeurs binaires des nombres suivants (codés 8 bits) et de leurs opposés :
- 34
- 128
- 74
- 1004

Corrigé :

Pour cet exercice, on commence par représenter les nombres en binaire en utilisant la méthode
vu au premier exercice. En effectue ensuite le complément à 2 pour chaque nombre. On
n’oublie pas que le résultat doit tenir sur 8 bits :

34 => binaire : 0010 0010 => -34 en complément à 2 : 1101 1110


128 => binaire : 1000 0000 => - 128 en complément à 2 : 1000 0000
74 => binaire : 0100 1010 => -74 en complément à 2 : 1011 0110
1009 => Pas de représentation possible sur 8 bits
7. Soustractions en base 2

Effectuer les opérations suivantes en binaire (développer) :

• 34 – 12
• 21 – 56
• 32 – 2

Tip : une soustraction peut être considérée comme une addition…

Corrigé :

Une soustraction peut être effectuée comme une addition si l’on représente le nombre négatif
en complément à 2 :

34 => binaire : 0010 0010


12 => binaire : 0000 1100 => le complément à 2 de 12 représente – 12 : 1111 0100

On addition donc la valeur 0010 0010 (34) et la valeur 1111 0100 qui est le complément a 2
de 12 de la même manière que l’on a effectué l’addition dans l’exercice précédent :

0010 0010 + 1111 0100 = 1 0001 0110 soit neuf bits. Comme nous avons figé le format sur 8
bits, le bits de gauche est annulé, donc le résultat est 0001 0110 ce qui réprésente la valeur
décimal de 22.

En procédant de même pour les autres valeurs on obtient :

21 – 56 = 0001 0101 – 1100 1000 = 0001 0101 + 0011 1000 (C à 2) = 1101 1101

Ici le résultat est négatif (bit de gauche à 1). Il faut effectuer son complément à 2 pour obtenir
la valeur exacte : 1101 1101 => complément à 2 : 0010 0011, soit 35.

32 – 2 = 0010 0000 – 0000 0010 = 0010 0000 + 1111 1110 (C à 2) = 1 0001 1110.

Dépassement du format 8 bits, on ne tient pas compte du bit de gauche, le résultat est donc :
0001 1110, c’est un nombre positif, soit 30.

8. Multiplications en base 2

Effectuer les opérations suivantes en binaire (développer):


- 34 x 12
- 2x8
- 10 x 20
Corrigé :

On commence par représenter les nombres en binaires et on effectue la multiplication comme


en décimal :

34 x 12 :

10 0010 (34)
x 1100
00 0000
+ 00 0000.
+ 10 0010..
+ 10 0010…
= 1 1001 1000 = 408

On remarque que le chiffres 0 du multiplicateur génère des lignes de 0 dans l’addition, on


peut alors procéder comme indiqué dans le cours en utilisant des registres a décalage. On
décale le multiplicateur vers la droite jusqu'à obtenir un nombre égale à 1 et parallèlement on
décalage vers la gauche le nombre à multiplier :

34 : 12 :
10 0010 1100
100 0100 110
1000 1000 11
1 0001 0000 1

On ne retient alors que les lignes dont le multiplicateur (divisé par 2 a chaque fois) est impair,
ici les deux dernières lignes. On additionne les correspondances et cela nous donne le
résultat : 1000 1000 + 1 0001 0000 = 1 1001 1000 = 408

En procédant de même pour les autres valeurs on obient :

2x8:

2: 8:
10 1000
100 100
1000 10
1 0000 1

La seul ligne à prendre est la dernière, le résultat est donc 1 0000 soit 16.

10 : 20 :
1010 10100
1 0100 1010
10 1000 101
101 0000 10
1010 0000 1
Ici, il y a deux lignes dont le multiplicateur (divisé par 2) est impair, il faut donc additionner
les deux pour connaître le résultat : 10 1000 + 1010 0000 = 1100 1000 soit 200.