Architecture des SI [2015-2016]
1
TD 1 : Représentation de l’information
Les données stockées dans l’ordinateur sont toujours codées en 0 et en 1. Les données (numériques,
alphanumériques, sons, images sont placées dans la mémoire centrale et peuvent être stockées
(sauvegardées) par exemple sur des périphériques extérieurs (clé USB, disque dur, DVD) sous un
autre format. Ainsi le nombre 12 pourra être stocké sur votre disque comme deux caractères : le
code de « 1 » et le code de « 2 », mais il sera converti en un code standard pour un usage rapide
dans la mémoire de l’ordinateur. L’objectif de ce TD est de comprendre que chaque type de données
a sa méthode de codage.
Exercice 1 : Conversion de la base 10 aux bases 2 et 16
Un nombre en base 10 peut s’écrire par exemple sous la forme 345,112 . On distingue en base 10 la
partie entière, (qui correspond aux puissances supérieures à zéro de 10) et la partie fractionnaire
(qui correspond aux puissances négatives de 10). Ainsi, 345,112 3 ∗ 10
 4 ∗ 10
 5 ∗ 10
1 ∗ 10

 1 ∗ 10

 2 ∗ 10

. On constate que les « digits » correspondent aux poids de chaque
puissance de 10. Pour transformer un nombre de la base 10 vers la base 2, on commence par coder
la partie entière. Pour cela, on utilise le principe de la division entière. Ainsi, si A et B sont deux
entiers, alors A/B donne un entier Q avec un reste entier R. On divise successivement le nombre par
2 jusqu’à ce qu’il n’y ait plus que 0 dans le quotient Q. Les restes sont les bits recherchés. Le premier
reste est le bit de poids faible (le plus à droite) et le dernier reste est le bit de poids fort (le plus à
gauche). Pour coder la partie fractionnaire en base 2, on multiplie par 2. Le nombre (0 ou 1) qui
passe en partie entière est le bit de poids fort. On recommence avec ce qui reste. Par exemple, coder
0,625 en base 2 :
0,625 x 2 = 1,250 1 est le poids fort (le plus à gauche)
0,250 x 2 = 0,500 0 est le poids suivant
0,500 x 2 = 1,000 1 est le poids faible (le plus à droite)
donc 0,625 se code 0,101 en base 2
Architecture des SI [2015-2016]
2
a) Coder 327 et 15,1 en base 2.
b) Coder 45 de la base 10 vers la base 4
Deux bases jouent, en plus du binaire, des rôles importants chez les informaticiens : la base 8 (octal)
où les chiffres possibles sont 0, 1, 2, 3, 4, 5, 6, 7 et l’hexadécimal (base 16) où les symboles sont 0, 1,
2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.
c) Que représente en base 10 le nombre 3A,7B ?
On constate que 2
= 8 et que 2
=16. Pour convertir rapidement un binaire en base 8, on fait des
paquets de 3 en commençant par la gauche de la virgule pour la partie entière et à droite de la
virgule pour la partie fractionnaire. On procède de même pour un la base 16 avec des paquets de 4.
Pour finir un paquet, on complète par des 0. Un paquet de trois bits correspond à un nombre entre 0
et 7 et un paquet de 4 bits correspond à un nombre entre 0 et 15
d) Transcrire 1001011,1101 en base 8 et 16
Exercice 2 : Addition et multiplications en binaire
Le mécanisme de l’addition en base 2 est absolument identique à l’addition en base 10. On
additionne chaque puissance de 2 identiques dans ce que l’on appelle un étage. Il est possible qu’il y
ait une retenue (qui vient de l’étage précédent c'est-à-dire de l’étage de droite). Pour un étage, le
total varie entre 00 (zéro) et 11 (trois). On pose le bit de poids faible et on retient le bit de poids fort
pour l’étage suivant.
a) Additionner 1001101 avec 11000100
b) Additionner en une seule opération 11111 + 110011 + 100011
La multiplication en binaire est très simple car la table de multiplication est très courte ! Le
mécanisme est le même qu’en décimal. Une multiplication est une suite d’additions.
c) Construire la table de multiplication
d) Multiplier 1100 par 101
Exercice 3 : Représentation des entiers
Dans tous les ordinateurs, tous les langages de programmation, les données de type entier (integer)
sont codées de la même façon. Par exemple avec 8 bits, on peut représenter 2
valeurs différentes,
soit 256 entiers.
a) Si on code un entier sur 2 octets (16 bits), quel est le nombre de possibilités ?
Les codages classiques se font sur 2, 4, 8 octets. Contrairement à un programme comme
Mathématica ou Maple, il n’y a pas d’adaptation dynamique de la taille à la valeur dans les langages
informatiques classiques (C, Visual Basic, java…).
Le signe (négatif ou positif) est porté par le bit de poids fort (bit de signe). Un nombre positif a 0
Architecture des SI [2015-2016]
3
comme bit de signe et un nombre négatif a un bit de signe égal à 1. La valeur 0 est codée avec un 0
comme bit de signe.
b) Combien y a-t-il de nombres positifs et négatifs si on code l’entier sur N bits ?
Pour coder un nombre positif, on fait une conversion de la base 10 en base 2 et on recopie bêtement
sur 8, ou 16, ou 32 bits en complétant par des zéros les poids forts non utilisés.
c) Coder 312 sur 16 bits
Pour coder un nombre négatif, on commence par coder sa valeur absolue (positive !) sur N bits.
Ensuite, on détermine son complément à 1 en remplaçant les 1 par des 0 et des 0 par des 1. Enfin, on
ajoute arithmétiquement au résultat la valeur 1 : c’est le complément à 2. On obtient le codage du
nombre négatif.
Exemple : coder -28 sur 8 bits
+28= 00011100
Complément à 1 : 11100011
addition : 11100011+00000001 = 11100100 c’est le complément à 2 et le résultat final
d) Coder -43 sur 16 bits
Exercice 4 : Représentation des réels (norme IEEE754.2)
Les nombres réels (real, float) ont eu dans l’histoire des ordinateurs plusieurs représentations
différentes, voire d’une marque à l’autre (IBM, BULL,..). Début des années 80, une norme a été fixée.
Un nombre réel est, en base 10, défini par trois éléments : le signe, la mantisse et l’exposant. Dans
notre utilisation habituelle, on peut écrire par exemple 245.5 ou 2.455 10
ou encore 245510

. Il y
a donc plusieurs représentations externes possibles. La représentation interne est unique.
Nous prenons comme exemple la représentation la plus simple sur 32 bits.
Codons le nombre décimal N?:)1OFBBB=10
 5*(signeGexposantpartie fractionnaire<G
(&PP
) 5((M(
/ B&E3G+
;Q)
:
<G(&+mantisse
3()/(<

0 G 3:(5&
/)H(FBBB=10)=$:I)=;//;(
toujours)=/)(
2N?:)1;(
 8/)&FBBB=10)
( <(D
Architecture des SI [2015-2016]
0
Exercice 5 : Autres représentations de données
Les caractèresont été représentés de façon très simple en utilisant le code ASCII sur 7 puis sur 8 bits,
ce qui a permis d’avoir 128 caractères différent puis 255 en ajoutant le 8
ème
bit.
La table qui suit représente la table des codes sur 7 bits. Cette table présente les LSB (Least
significant bit ou bits de poids faibles) et MSB (Most significant bit ou bits de poids fort). Les codes
de 0 à 31 sont des codes spéciaux (dits « non imprimables») et correspondent à des caractères
utilisés en télétransmission (notre ancêtre du réseau).
a) Coder « TrUc » en code ASCII 7 bits
Il existe maintenant l’UNICODE qui permet de coder n’importe quel système d’écriture (chinois,
arabe, grec, indien,…) et n’importe quel symboles (mathématiques, musique…). Il s’agit d’un codage
dont la dernière mise à jour a été faite en janvier 2012. Cela vous permet d’envoyer en chinois et de
recevoir un courrier en chinois. Ce n’était pas le cas dans les années 90 !
b) Si vous avez du courage, faites un tour sur Wikipédia : ce n’est pas simple du tout !
Les images sont des tableaux de points colorés appelés « Pixels ». Très classiquement, un pixel est
représenté sur 24 bits : 8 bits pour le rouge, 8 bits pour le vert et 8 bits pour le bleu.
c) Donner le nombre d’octets d’une image de 1024 x1024 pixels
d) Transformer cette valeur en KO (1024 octets), en MO (1024 KO)
e) Comment coder le blanc et le noir ?
Architecture des SI [2015-2016]
TD2 : L’ordinateur, une machine logique
L’objectif de ce TD est d’acquérir une bonne mécanique de calcul algébrique en logique Booléenne.
L’utilisation de « + » pour le OU logique et de « . » pour le ET logique en France induit
malheureusement un « plaquage » de l’algèbre des nombres que vous connaissez. Il faut considérer
que cette algèbre est complètement différente. L’ordinateur est une machine Booléenne seuls
deux états sont utilisés pour manipuler programmes et données.
Exercice 1 : Simplification de fonctions logiques
Quelques particularités de l’algèbre ne doivent pas être oubliées : A = A+A : Cela permet de
reprendre plusieurs fois un terme qui se simplifie avec d’autres termes.
A.(B+C)=A.B + A.C et A + B.C=(A+B).(A+C) : distributivité de « + » par rapport à « . » et de « . » par
rapport à « + »
A+ Ā.B=A+B : une propriété souvent oubliée.
Développer et simplifier les équations suivantes :
a) A
.B.CA.B
.CDD
.AB
b) AB
C.ABC
D
c) A.BC
A
.BA.C
d) A.B.C
A
.B
.CA.B
C
.A.B
Exercice 2: Table de vérité
La table de véri d’une fonction à plusieurs variables permet d’écrire explicitement (toutes les
combinaisons possibles des entrées) les valeurs des sorties de la fonction. On présente la table de
vérité en codant les entrées en binaire naturel.
a) Combien de lignes comporte la table de vérité d’une fonction de n variables ?
b) Ecrire cette table de vérité avec la fonction fA,B,C,DA.B
B.C
D.A
c) Soit la table de vérité ci-dessous, écrire F(A,B,C) et faites la simplification de F si cela est
possible.
Table
A
B
C
F
0 0 0 0
0 0 1 1
0 1 0 0
0 1 1 1
1 0 0 0
1 0 1 1
1 1 0 0
1 1 1 1
1 / 14 100%