You are on page 1of 22

Rappels de

numération Page réalisée par:

Philippe Moreau

Ecriture d'un nombre dans une base quelconque


Un système de numération est un ensemble composé d'un nombre B (appelé base) et d'un
ensemble C = { a , b , c , d , ....} dont les éléments sont appelés des chiffres.

L'écriture d'un nombre X = xnxn-1. . . x2x1x0 dans ce système s'interprète alors en réalisant le
calcul suivant:

X = xnBn + xn-1Bn-1 + . . . + x2B2 + x1B1 + x0B0

définitions: xn est appelé le chiffre de poids fort ( et par extention xnxn-1 sont les chiffres de
poids fort) alors que x0 est appelé le chiffre de poids faible ( et par extention x2x1x0sont les
chiffres de poids faible).

Les systèmes de numérations utilisés en informatique


En informatique, on travaille essentiellement avec trois systèmes de numération (un quatrième
système de numération est parfois rencontré).

Tout d'abord, le système le plus fréquemment utilisé (car l'informatique "ce sont" les
machines, mais surtout les hommes qui les utilisent) est le système décimal (dit à base 10).

On a alors B = 10 et C = { 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 }

le nombre X = 2589 s'interprète comme étant le résultat du


calcul:

X = 2.103 + 5.102 + 8.101 + 9.100

Remarque: par soucis de simplification, pour la compréhension, les puissances de la bases


seront toujours mentionnées dans la base dix.
La représentation des informations en machines reposant sur le principe du "tout ou rien", cela
nous conduit de façon naturel à évoquer le système binaire (dit à base 2).

On a alors B = 2 et C = { 0 , 1 }

et le nombre X = 1011 s'interprète comme étant le résultat du


calcul:

X = 1.23 + 0.22 + 1.21 + 1.20

Remarque: toujours par soucis de simplification la base utilisée sera écrite dans la base dix.

Pour résoudre les problèmes dûs à l'affuence d'informations de type "0 ou 1" (grande quantité
de chiffres à "saisir" ou à "lire") on a été amené à utiliser le système hexadécimal (dit à
base 16).

On a alors B = 16 et l'ensemble des chiffres utilisés en base dix est complété


par les six premières lettres de l'alphabet

C={0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}

ainsi le nombre X = A7C5 s'interprète par le calcul:

X = A.163 + 7.162 + C.161 + 5.160

L'utilisation du système octal (dit à base 8) repose sur la même idée que pour l'hexadécimal
(regrouper des informations "0 ou1").

dans ce cas B = 8 et C = { 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 }

et le nombre X = 5071 s'interprète par:

X = 5.83 + 0.82 + 7.81 + 1.80

Conversion d'un nombre


Problème: On considère un nombre NB écrit dans une base B et on souhaite écrire ce nombre
dans une base B'.

Pour cela il existe quatre méthodes classiques permettant cette opération (appelée
conversion). Les deux premières méthodes peuvent être appliquées pour des bases B et B'
quelconque, alors que les deux dernières méthodes concernent des cas particuliers.

1ère Méthode: Le calcul de l'expression représentant le nombre

Principe: Cette première méthode consiste à effectuer le calcul de l'expression qui définit le
nombre. Ainsi, si le nombre NB s'écrit NB = abcd dans la base B on effectuera le calcul de
l'expression:

a . B3 + b . B2 + c . B1 + d . B0

pour trouver l'écriture de NB dans la base B'.

Remarques:

- tous les calculs (additions, multiplications, exponentiation) sont effectués dans la base B'.

- en conséquence, cette méthode sera surtout utilisée (par l'être humain) lorsque la base B' =
10.

Exemple: on considère le nombre NB = 1 1 1 0 1 0 1 1 écrit dans la base 2 que l'on veut écrire
dans la base 10. On effectue alors, dans la base 10, le calcul suivant:

1.27 + 1.27 + 1.25 + 0.24 + 1.23 + 0.22 + 1.21 + 1.20

= 128 + 64 + 32 + 0 + 8 + 0 + 2 + 1

= 235

Notation: On écrira alors:

(1 1 1 0 1 0 1 1)2 = (2 3 5)10

Remarque: A titre d'exemple nous allons écrire les opérations à réaliser si nous avions à
convertir le nombre NB = 235 (écrit dans la base 10) dans la base 2. On réaliserait alors le
calcul suivant:

1 0 . 1 0 1 0 10 + 1 1 . 1 0 1 0 1 + 1 0 1 . 1 0 1 0 0
=11001000+11110+101

=11101011

2ème Méthode: La méthode des divisions successives

Principe: Cette deuxième méthode consiste à effectuer des divisions successives entières du
nombre NB = abcd (écrit dans la base B) jusqu'à l'obtention d'un quotient nul. Au cours de
ces divisions on note les différents restes et ceux-ci permettront l'écriture du nombre dans la
nouvelle base B'. Voici schématiquement les opérations à réaliser:

On pourra alors écrire:

(a b c d)B = (Rn+1 Rn . . . R2 R1)B'

Remarques:
- tous les calculs (divisions donc soustractions, multiplications) sont effectués dans la base B.
- en conséquence, cette méthode sera surtout utilisée (par l'être humain) lorsque la base B =
10.

Exemple: on considère le nombre NB = 2 3 5 écrit dans la base 10 que l'on veut convertir
dans la base 2. On effectue alors, dans la base 10, les calculs suivants:

on obtient alors:

(2 3 5)10 = (1 1 1 0 1 0 1 1)2
Remarque: toujours à titre d'exemple (dans le but de montrer que cette méthode peut être
appliquée pour des bases quelconque) nous aurions pu convertir le nombre NB = 1 1 1 0 1 0 1
1 (écrit dans la base 2) dans la base 10, en réalisant les divisions suivantes:

pour obtenir: (1 1 1 0 1 0 1 1)2= (2 3 5)10

3ème Méthode: (cas particulier) utilisation d'une table des puissances de 2


pour une conversion de la base 10 vers la base 2.

Principe: On commence par dresser une table des puissances de 2. Puis, considérant le
nombre NB (écrit dans la base 10):
a) On recherche, dans la table, la plus grande puissance de 2 inférieure ou égale au nombre à
convertir.
b) On note alors son existence.
c) On soustrait cette puissance du nombre.
d) Puis on convertit le reste issu de cette soustraction (si celui-ci est différent de 0).

Exemple: on désire convertir le nombre NB = 2 3 5 écrit dans la base 10 dans la base 2. Dans
un premier temps on construit la table suivante:

20 = 1 25 = 32 210 = 1024
21 = 2 26 = 64 211 = 2048
22 = 4 27 = 128 212 = 4096
23 = 8 28 = 256 213 = 8192
24 = 16 29 = 512 214 = 16384
a) on trouve 128 (= 27)
b) cette étape est très importante (surtout la première fois) car elle permet de
terminer le nombre de chiffres dans l'écriture du nombre. En effet, cette
méthode consistant à rechercher la présence des1 dans l'écriture binaire du
nombre, il est nécessaire de noter à ce moment les emplacements où se
positionneront les 0.
On sait alors que le nombre s'écrit avec 8 chiffres (le premier 1 étant placé).
le nombre converti s'écrira: 1 . . . . . . .
c) on réalise la soustraction: 2 3 5 - 1 2 8 = 1 0 7
d)
a) b) c)
64 (= 26) 11...... 107-64=43
5
32 (= 2 ) 111..... 4 3 - 32 = 11
3
8 (= 2 ) 111.1... 11 - 8 = 3
1
2 (= 2 ) 111.1.1. 3-2=1
0
1 (= 2 ) 111.1.11 1-1=0

il reste alors à compléter l'écriture: en ajoutant des 0 dans les emplacements


libres pour obtenir le résultat escompté: 1 1 1 0 1 0 1 1

(2 3 5)10 = (1 1 1 0 1 0 1 1)2

4ème Méthode: (cas particulier) B = B'n (ou Bn = B')

Principe: Dans ce cas, à un chiffre de la base B correspond un nombre de n chiffres dans la


base B' (il existe une bijection entre les chiffres de B et les nombres de n chiffres écrits dans
la base B'). Respectivement (cas où Bn = B'), à un ensemble de n chiffres dans l'écriture du
nombre dans la base B', on associera un chiffre de la base B.

Remarques:
- Cette méthode conversion est l'une des plus simple, puisqu'il s'agit simplement d'appliquer le
principe du codage ou du décodage (utilisation d'une table de codes).
- Il suffit donc de calculer les tables de codages. Voici les deux tables de codages qui peuvent
être utilisées dans les cas étudiés.
Table de correspondance Hexadécimal -
Table Octal - Binaire
Binaire
0 0000 8 1000 0 000

1 0001 9 1001 1 001

2 0010 A 1010 2 010

3 0011 B 1011 3 011

4 0100 C 1100 4 100

5 0101 D 1101 5 101

6 0110 E 1110 6 110

7 0111 F 1111 7 111

Exemples:
Ex1: on veut convertir le nombre NB = 3 A 9 B écrit dans la base 16 (= 24) dans la base 2. On
remplace alors chacun des chiffres du nombre par le nombre de 4 chiffres correspondant et on
obtient:

(3 A 9 B)16 = ( 1 1 1 0 1 0 1 0 0 1 1 0 1 1 )2

remarque:dans ce chapitre sur la numération les 0 qui précèdent l'écriture "significative" des
nombres ne seront pas mentionnés.

Ex2: on veut convertir le nombre NB = 1 1 0 1 0 1 0 0 1 1 0 1 1 écrit dans la base 2 dans la


base 8 (= 23). On remplace alors chaque blocs de 3 chiffres du nombre par le chiffre
correspondant et on obtient (rmq: les blocs de 3 chiffres sont obtenus en découpant le nombre
à partir de la droite c'est à dire dans le sens de lecture classique d'un nombre en vue de son
interprétation):

( 1 1 0 1 0 1 0 0 1 1 0 1 1 )2 = (1 5 2 3 3)8

Remarque:

Les principes (algorithmes), appris dans les classes primaires, concernant les opérations
d'addition de soustraction, de multiplication et de division s'appliquent (bien évidemment) sur
les nombres écrits dans une base quelconque.
Représentation des
informations Page réalisée par:

Philippe Moreau
Définition d'un format d'écriture
Pour représenter les informations dans une machine, le principe adopté est celui du "tout ou
rien" conséquence de l'utilisation de l'électronique numérique (ou digitale(en opposition avec
l'électronique analogique)). De ce fait (et de façon naturelle) la symbolisation du "tout ou
rien" s'est faite par les symboles 1 ou 0. En informatique, on a coutume de dire d'une machine
contient des informations 0 ou 1 aussi appelés des bits.

Un bit, pour représenter des informations, ne présentant que très peu d'intérêt; on a regroupé
un ensemble de bits pour pouvoir coder une information (ou faire une interprétation de ce
codage).

Dans ce qui suit, les bits sont regroupés par blocs de 4 (ou quartet) pour la représentation des
chiffres, puis par paquets de 8 (ou octet) pour toutes les interprétations (ou représentations)
suivantes.

Représentation des chiffres


Le code DCB
Le principe du code DCB (Décimal Codé Binaire) est de reprendre l'interprétation des
différents chiffres, de la base 10, en base 2 et "cadrer" chaque chiffre sur un quartet. Ainsi, à
un chiffre on fait correspondre un quartet et à l'inverse à un quartet on associe un chiffre (si
cela est possible).

La table de codage est alors la suivante:

Table de codage DCB


0 0000 5 0101
1 0001 6 0110
2 0010 7 0111
3 0011 8 1000
4 0100 9 1001

Les codes pondérés


L'interprétation des informations codés avec un "code pondéré" repose sur le principe suivant:

A chaque bit on attribue un poids, il suffit alors de multiplier ces poids par les bits
correspondants et d'en faire la somme, pour retrouver l'information qui a été codée. Ainsi, le
quartet b1b2b3b4 codé avec le cope pondéré p1p2p3p4 s'interprétera:

INFO = b1 . p1 + b2 . p2 + b3 . p3 + b4 . p4

remarque: le code pondéré le plus utilisé est le code pondéré 8 4 2 1(qui correspond à
l'écriture classique en base 2).

Un autre code classique: Le code de Gray


Le code de Gray, également appelé code binaire réfléchi, n'est pas vraiment utilisé pour la
représentation de chiffres mais plutôt pour la représentation d'états. Ses particularités sont
que:
- en passant d'une information à la suivante, un seul bit est modifié.
- cette propriété est vraie pour les informations aux extrémités (code circulaire)
Exemple de code de Gray sur un quartet (on a représenté les "miroirs" qui établissent la
réflexion (ou symétrie) sur certaines colonnes):
0000
0 0 0 1 symétrie sur la colonne "0" (on change l'état "1")
0011
0 0 1 0 symétrie sur les colonnes"0" et "1" (on change l'état "2")
0110
0111
0101
0 1 0 0 symétrie sur les colonnes "0", "1" et "2"(on change l'état "3")
1100
1101
1111
1110
1010
1011
1001
1000

Représentation des caractères


le code ATI (Alphabet Télégraphique International) (code à 5 bits)
Bien que ne possédant que 5 bits (donc, a priori, 32 codages différents possibles), le code ATI
permet de représenter tous les carctères , tous les chiffres et un certain nombre d'autres
caractères. Ceci est rendu possible grâce à l'utilisation de "caractères" spéciaux "lettre" (1 1 1
1 1) et "chiffre" (1 1 0 1 1) qui permettent de sélectionner la colonne dans laquelle s'effectuera
le décodage de la suite du texte.

Exemple: l'information 1 0 0 0 0 sera décodée E si la lecture doit s'effectuer dans la colonne


"lettre" (et décodée 3 sinon).

le code ISO6 (International Standard Organisation) (code à 6 bits)


Ce code permet la suppression de l'ambiguïté de décodage due à l'utilisation des caractères
spéciaux "lettre" et "chiffre". Pour coder (ou décoder) les informations il suffit de concaténer
les bits de poids forts suivis des bits de poids faibles pour obtenir les 6 bits correspondant à
l'information.

Exemple: le caractère G se représentera par: 1 0 0 1 1 1

Remarque: ce code, qui n'est plus utilisé, présente l'inconvénient majeur de ne pas pouvoir
coder (entre autres) les minuscules.

le code EBCDIC (Extended Binary Coded Decimal Interchange Code) (code à 8


bits)

Ce code permet de résoudre le problème de représentation des minuscules. Code à 8 bits il


parait également plus proche du format classique utilisé dans une machine, à savoir l'octet. La
lecture de la table de codage s'effectue de façon similaire à la lecture de la table ISO6.

Exemple: le caractère X se représentera par: 1 1 1 0 0 1 1 1

Remarque: en observant la table de ce code, on s'aperçoit qu'un grand nombre de codes n'ont
pas d'interprétation. On dit que ce code est un code "creux".

le code ASCII (American Standard Code for Information Interchange) (code à 7


bits)

Ce code "standard", est actuellement le plus répandu. Le principe de lecture de la table est
identique à ceux précédant.

Exemple: le caractère B se représentera par: 1 0 0 0 0 1 0


Remarque:
- Pour facilité la lecture des informations on a coutume d'écrire celles-ci en hexadécimal (pour
éviter d'écrire un trop grand nombre de caractères 0 ou 1 ce qui devient rapidement illisible).
Ainsi le caractère B se représentera par 42.
- Un autre intérêt du code ASCII réside dans le fait que celui-ci n'occupe pas tout
l'emplacement réservé (l'octet). Il reste donc un bit de libre qui pourra être interprété au gré de
l'utilisateur.

Remarque: Dans les tables des différents codes, il apparait un certain nombre de caractères
non "affichable" . Voici la signification de certains d'entre eux qui sont très utiles.
sp space espace
bs back space retour en arrière d'un caractère
lf line feed passage à la ligne suivante
cr carriage return retour en début de ligne

Représentation des nombres


Rappel: On suppose que le format utilisé pour la représentation est toujours un octet.

les entiers (positifs)


De façon naturelle, la représentation des nombres entiers se fera en utilisant l'écriture binaire
de ceux-ci. On pourra alors appliquer les algorithmes classiques pour effectuer les opérations
arithmétiques de base. Toutefois, étant donné qu'avec un octet on ne peut avoir que 256
écriture différentes, il se peut que les résultats des opérations soient erronés (dépassement de
la capacité de représentation).

Exemple: représentation de 98
01100010
Capacité de représentation:
0 ---> 255

Pour la représentation des nombres négatifs et la représentation des nombres non entiers
(nombres à virgule) il faut cette fois trouver un algorithme de codage de ceux-ci.

Les entiers signés


Idée: Les nombres négatifs sont signalés par le caractère "-" dans l'écriture standard. D'où
l'idée de se servir du bit le plus à gauche (ici le bit7) pour indiquer que le nombre codé
représente un nombre négatif.

1ère Solution envisagée: Le bit 7 code le symbole "-" (ou "+") et les 7 autres bits
l'écriture binaire du nombre.

exemple: représentation de -9
(9)10 = ( 0 0 0 0 1 0 0 1 )2
-9 ------> 1 0 0 0 1 0 0 1
Problèmes:
Avec ce principe de représentation on note que:
- Il y a deux représentations de zéro
+0 ------> 0 0 0 0 0 0 0 0
-0 ------> 1 0 0 0 0 0 0 0
- L'algorithme classique d'addition (sur les nombres binaires) ne fonctionne pas.
5 ------> 0 0 0 0 0 1 0 1
+ - 9 ------> 1 0 0 0 1 0 0 1
-14 <------ 1 0 0 0 1 1 1 0

2ème Solution possible: L'emploi du complément à 1, qui s'obtient en soustrayant


chaque bit à 1( ce qui revient à inverser tous les bits).

exemple: représentation de -9
(9)10 = ( 0 0 0 0 1 0 0 1 )2
-9 ------> 1 1 1 1 0 1 1 0
Problèmes:
Ici encore, on rencontre les mêmes problèmes et on note que:
- Il y a deux représentations de zéro
+0 ------> 0 0 0 0 0 0 0 0
-0 ------> 1 1 1 1 1 1 1 1
- et l'algorithme classique d'addition ne fonctionne pas.
15 ------> 0 0 0 0 1 1 1 1
+ - 9 ------> 1 1 1 1 0 1 1 0
5 <------ 0 0 0 0 0 1 0 1

3ème Solution (solution adoptée): Le principe du complément à 2. Pour cela,


observons (sur 8 bits) le résultat obtenu en additionnant un mot binaire et son complément à 1.

Soit X un octet et Y son complément à1. On a alors, sur 8 bits:


X+Y=11111111
d'où:
X+Y+1=00000000
et on peut donc écrire, qu'en considérant un format fixé on a:
X+Y+1=0
D'où l'idée de prendre comme représentation de -X la valeur:
-X = Y + 1
exemples:
représentation de -13
(13)10 = ( 0 0 0 0 1 1 0 1 )2
complément à 1 ------> 1 1 1 1 0 0 1 0 ------> + 1
-13 ------> 1 1 1 1 0 0 1 1
représentation de -128
(128)10 = ( 1 0 0 0 0 0 0 0 )2
complément à 1 ------> 0 1 1 1 1 1 1 1 ------> + 1
-128 ------> 1 0 0 0 0 0 0 0
Capacité de représentation: les entiers représentables sur un octet sont donc:
-128 ---> +127

Les nombres fractionnaires (en virgule fixe)


Dans la représentation des nombres "non entiers" (abusivement appelés réels) il faut pouvoir
considérer une virgule. Et pour savoir comment placer cette virgule il existe deux grands
principes: La représentation dite en virgule fixe et la représentation dite en virgule flottante.

Dans la représentation en virgule fixe, méthode la plus simple, la virgule est positionnée une
fois pour toute dans le format utilisé.

Exemple: Sur l'octet (notre format de représentation) on a placé la virgule entre le bit 2 et le
bit 3.

On dira alors que l'écriture du nombre fractionnaire est au format [ 5 , 3 ]

Ainsi l'octet: 1 1 0 0 0 1 0 1
représentera le nombre 24,625
rappel: interprétation des chiffres placés après une virgule
si le chiffre 'C' est placé n emplacements après la virgule, celui-ci conduit
au calcul suivant: C . B-n (où B est la base)

Remarques:
addition: Avec cette méthode de représentation on peut additionner deux nombres en gardant
le principe de l'addition binaire.
représentation des nombres fractionnaires signés: l'algorithme classique de l'addition
pouvant être utilisé, on peut représenter les nombres signés en utilisant la technique du
complément à 2.
ainsi l'octet 1 1 0 0 0 1 0 1 , (qui représentait 24,625) pourra aussi s'interpréter comme la
représentation de 7,375 (toujours au format [ 5 , 3 ])

1 1 0 0 0 1 0 1------> complément à 1 ------> 0 0 1 1 1 0 1 0 --------> + 1 -------> 0 0 1 1 1 0 1


1 ------> 7,375

capacité de représentation: En raisonnant toujours sur le format [ 5 , 3 ] , on obtient que les


nombres représentables sont compris dans l'intervalle:
0 ---> 31,875 si on considère les nombres non signés
et 16 ---> 15,875 si on les considère signés
De plus on observera que l'échantillonnage dans cet intervalle est régulier. C'est à dire, que les
nombres représentables sont tous séparés d'un "Pas" de 0,125.

Les nombres fractionnaires (en virgule flottante)


La représentation en virgule flottante, repose sur l'observation suivante:

Tout nombre N peut s'écrire sous la forme suivante: N = M . BE où B est la base et où M et E


sont appelés Mantisse et Exposant.

Dans ce cas il suffit alors d'avoir une représentation de la mantisse et de l'exposant pour
pouvoir retrouver le nombre (sachant qu'ici la base utilisée est la base 2).

Exemple: Sur un octet on décide de réserver 5 bits pour représenter la mantisse et les 3 bits
restant pour représenter l'exposant.

On dira toujours que l'écriture du nombre fractionnaire est au format [ 5 , 3 ]

Ainsi l'octet: 0 1 0 0 1 1 0 1
représentera le nombre 1,125
rmq: Il ne faut pas oublier que l'exposant est signé (s'il ne l'était pas tous les nombres
représentables seraient des entiers). Ainsi l'octet précédant conduit au calcul suivant: 9 . 2-3 =
1,125

Remarques:
addition: Il semble évident qu'avec cette méthode de représentation on ne peut plus appliquer
l'algorithme classique de l'addition.
représentation des nombres fractionnaires signés:
En conséquence la technique du complément à 2 n'a plus lieu d'être utilisée. On va alors
réserver un bit (souvent le bit de gauche) pour symboliser le signe.
On dira que l'écriture du nombre est au format [ S , 4 , 3 ]
Problème: si l'on n'impose pas d'autres règles on constate que les octets suivants:
01100111,00110000,00011001
représentent tous les trois le nombre 6
Pour résoudre ce problème une méthode classique consiste à toujours écrire la mantisse en la
cadrant à gauche.

Ceci revient alors à considérer qu'il existe une virgule à déplacer de la valeur précisée par
l'exposant

Remarque le deuxième bit a toujours la valeur 1 (sauf pour la représentation de0).

Exemple: écrit au format [ S , 4 , 3 ] l'octet suivant:


1 1 0 0 0 1 1 1 représente 0,25
l'exposant vaut 1, on déplace donc la virgule d'un rang vers la gauche.
capacité de représentation: En raisonnant sur le format [ 5 , 3 ] , on obtient que les nombres
représentables sont compris dans l'intervalle:
0 ---> 248
Si on observe l'échantillonnage dans cet intervalle on s'aperçoit que celui-ci n'est plus
régulier. Dans le début de l'intervalle le Pas est de 0,0625 (le deuxième nombre représentable
est 0,0625) alors qu'en fin de l'intervalle le pas est de 8 (l'avant dernier nombre représentable
est 240).

Représentation d'autres informations


un exemple: des "pixels"
En graphisme, lorsque l'on veut mettre en uvre des algorithmes de tracés sur un écran "noir et
blanc" (monochrome); en règle générale on associe un pixel (point sur l'écran) à un bit de la
mémoire écran.

Ainsi, un octet représentera un ensemble de 8 points écran. Par convention on associera le


terme "allumé" à une information 1 et "éteint" à l'information 0. Ces termes "allumé", "éteint"
sont à prendre au sens logique et non physique (l'interprétation physique dépendra du mode de
travail (couleur de fond)).
Pour réaliser des manipulations sur un pixel, on effectuera alors des opérations logiques entre
l'octet contenant le bit associé à ce pixel et un autre octet (à calculer).

Rappels: les opérateurs logiques en informatique. Voici la présentation des tables des
opérateurs utilisés de façon classique. Le OU, le ET, le NON tels qu'ils existent en
mathématiques mais également le OU exclusif (OUEx).

Tables du OU Logique

Ou bien

Tables du ET Logique

Ou bien

Table du NON Logique

Tables du OU Exclusif

Ou bien

En observant ces tables, on constate donc que le OU peut être utilisé pour "forcer" un bit à 1
(avec 1 le résultat est toujours 1 et avec 0 on conserve l'information initiale), que le ET peut
être utilisé pour "forcer" un bit à 0 (avec 0 le résultat est toujours 0 et avec 1 on conserve
l'information initiale) et que le OUEx permet d'inverser un bit (avec 1 le résultat est le
complément (NON) de l'information initiale et avec 0 on conserve l'information initiale).

Remarques:
Un octet peut encore représenter des informations issues d'un codage qui vous est propre (2
fois 4 bits, 4 fois 2 bits, 8 informations "vrai" "faux", etc).

Un octet peut aussi représenter une information que l'on ne sait pas décoder. C'est le cas
lorsque l'octet est une portion de code de programme, son interprétation se fera alors par le
micro proccesseur.

REPRÉSENTATION des INFORMATIONS


ARCHITECTURE des ORDINATEURS
Page réalisée par:

Philippe Moreau

Exercices de TDs
(du module Optionnel de DEUG MIAS 2ème Année)
Rappels de numération

- Conversion d'un nombre d'une base B dans une base B'

Ex1: Convertir de Décimal en Binaire les nombres suivants:


- 129 , 261 , 245 en utilisant la méthode des divisions successives
- 129 , 261 , 245 en utilisant la méthode de la table de puissances
- avantages et inconvénients des deux méthodes

Ex2: Convertir de Binaire en Décimal les nombres suivants: 110110 , 1010101 , 1100 ,
100001010

Ex3: Convertir de Décimal en Hexadécimal les nombres suivants:172 , 96

Ex4: Convertir d'Hexadécimal en Décimal les nombres suivants: B5 , A1C

Ex5: Convertir d'Hexadécimal en Binaire les nombres suivants: B5 , A1C , 5D9E , 3F9C

Ex6: Convertir de Binaire en Hexadécimal les nombres suivants: 110110 , 1011101 ,


111001110 , 10010111010

Ex7: Convertir d'Hexadécimal en Octal les nombres suivants: 5D9E , 3F9C faut-il passer par
le décimal?

Ex8: Convertir d'Octal en Hexadécimal les nombres suivants:5793 , 3621 faut-il passer par le
décimal?

Ex9: Citer d'autres bases plus ou moins couramment utilisées.


- Rappels des algorithmes liés aux opérateurs arithmétiques

Ex10: Réaliser les additions suivantes:


en binaire 1011 + 101110 , 10101 + 101111 , 10110 + 11011 + 110111
en hexadécimal A4F2 + 1808 , A5EF + 6A45

Nous verrons, par la suite, que les problèmes de soustractions peuvent être résolus en utilisant
des "algorithmes" de codification (cf représentation des nombres).

Ex11: Réaliser les multiplications suivantes:


(1 1 0 1 1 1)2 x (129)10
(1 1 0 1 0)2 x (33)10

Ex12: (division) Réaliser la conversion du nombre 1 1 1 0 1 0 1 0, écrit dans la base 2, dans la


base 10 en utilisant la méthode des divisions successives.

Ex13: (entracte) montrer que 22n+1+1 est divisible par 3.

Ex14: (critère de divisibilité) donner des diviseurs (déduction "visuel", sans conversion) du
nombre 101001010

Représentation des informations

- les chiffres: DCB

Ex15: Réaliser l'addition suivante en DCB:


0101 1000 + 0010 0011

- les caractères: code ASCII

Ex16:Traduire et compléter le message suivant, écrit en code ASCII


10000111101111111010111100101110011
01000001100100110010101000001001101
111001001000001001101

Ex17:Donner le codage en hexadécimal du dernier message (écrit en ASCII) en supposant


que le bit7 est à 1.

Les nombres

les entiers (non signés)

Ex18:Donner le codage (sur un octet) des nombres suivants: 100 , 200 , 50 , 120
Ex19:Faire réaliser (à une machine) les opérations suivantes: 100 + 120 , 200 + 100 , 50 + 50
- interpréter les résultats
- trouver le moyen pour détecter qu'un résultat est faux.

entiers signés

Ex20:Donner le codage (sur un octet) des nombres suivants: -64 , -45 , -1 , -120

Ex21:Faire réaliser (à une machine) les opérations suivantes:


100 + 50 , 100 + -45 , -64 + -64 , -120 + -45 , 50 + -120 , -45 + -1
- interpréter les résultats
- trouver le moyen pour détecter qu'un résultat est faux.

nombres fractionnaires virgule fixe

Ex22: Donner une représentation des nombres suivants en utilisant le format [5,3] signé: 9,75
-5,25 3,5625

Ex23: Peut-on trouver un format permettant de représenter 3,5625?

nombres fractionnaires virgule flottante

Ex24: Donner une représentation des nombres suivants en utilisant le format [S,4,3]: 2,75
-3,25 12,5

Ex25: Peut-on trouver un format permettant de représenter -12,5 ?

autres informations: des "pixels"

Ex26: Ecrire les opérations qui permettent de:


- allumer le 3ème point (correspondant au 3ème bit d'un octet)
- éteindre le 3ème point
- visualiser le 3ème point (réflexion)
inverser le 3ème point
inverser tous les point sauf le 3ème
(donner d'autres écritures de cette dernière opération)

Révision

Ex27: Donner toutes les interprétations possibles de l'octet C5

L'assembleur
Les modes d'adressages - définition d'un programme assembleur (MV68xxx) -
présentation de quelques instructions

On considère la portion de mémoire et les registres suivants:


Ex1: Décrire les contenus des registres modifiés après les lignes suivantes:
MOVE #20, D0
MOVE $80F0,A0
MOVE $80F3,D1

Ex2: même exercice en repartant des données initiales


MOVE #$80F0,A0
ADD.L #2,A0
MOVE (A0),A1
MOVE.B (A1),D0
ADD.L #2,A1
MOVE (A1),D1

Ex3: En utilisant l'adressage absolu, écrire la ou les lignes permettant de réaliser l'opération
suivante: Transférer le contenu de $8F0-$8F1 en $8F8-$8F9

Ex4: Même exercice en utilisant l'adressage indirect (Transférer le contenu de $8F0-$8F1 en


$8F8-$8F9)

Ex5: En utilisant l'adressage absolu, écrire la ou les lignes permettant de réaliser l'opération
suivante: Transférer le contenu de $8F3-$8F4 en $8FA-$8FB

Ex6: Même exercice en utilisant l'adressage indirect

simulation des principales structures de programme

Ex7: "Traduire" si le contenu de $8F0 est nul additionner $8F1 et $8F2 et mettre le résultat en
$8F4 sinon additionner $8F1 et $8F3 (résultat dans $8F4).

Ex8: "Traduire" $8F6 reçoit la somme de $8F4 et $8F5 ($8F4, $8F5 et $8F6 sur 8bits)
Ex9: "Traduire" $8F6 reçoit la somme de $8F4 et $8F5 ($8F4, $8F5 sur 8 bits et $8F6 sur
16bits représentant des entiers non signés)
a) l'addition s'effectue sur 16bits
b) l'addition s'effectue sur 8bits avec gestion de la retenue dans un registre

Ex10: "Traduire" $8F6 reçoit la somme de $8F4 et $8F5 ($8F4, $8F5 sur 8 bits et $8F6 sur
16bits représentant des entiers signés), l'addition s'effectue sur 16bits (conversion des
nombres 8 --> 16bits)

Ex11: Que faut il changer si les informations représentent des fractionnaires virgule fixe au
format [5,3] et le résultat au format [10,6]? (uniquement l'idée)

Ex12: Ecrire les instructions qui permettent de faire la somme des 50 premiers entiers (boucle
"pour" test en début de boucle)

Ex13: Même exercice que le précédent, en simulant une boucle "répète"

Ex14: Ecrire un sous programme réalisant la somme de deux registres D0 et D1 (tous deux
sur 16 bits(entiers non signés)) résultat dans D0 (sur 32 bits) et se servir de ce sous
programme pour effectuer la somme des 300 premiers entiers.

"déclaration" de "variables" + le jeu d'instructions

Ex15: "Traduire" Z <-- X+Y sachant que: Z (32bits) X (8bits) Y(16bits)

Ex16: "Traduire" Z <-- X+Y sachant que: X, Y et Z sont sur 64 bits

Ex18: Faire la somme des 30 premiers éléments d'un tableau T

Les appels systèmes

Ex19: Afficher la lettre a, puis la lettre b, passez au début de la ligne suivante pour afficher la
lettre c.

Ex20: Afficher un DCB contenu dans le quartet de poids faible

Ex21: Afficher le contenu d'un octet en binaire

Ex22: Afficher une chaine de caractères terminée par 0

Ex23: Saisir un chiffre et stocker sa valeur dans un octet

Ex24: Saisir un nombre en Binaire

Ex25: Saisir un nombre en Décimal


Ex26: Afficher le contenu de D0 en Hexadécimal

Ex27: Afficher le contenu de D0 en Décimal