Professional Documents
Culture Documents
Philippe Moreau
L'écriture d'un nombre X = xnxn-1. . . x2x1x0 dans ce système s'interprète alors en réalisant le
calcul suivant:
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).
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 }
On a alors B = 2 et C = { 0 , 1 }
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).
C={0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}
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 }
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.
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
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:
= 128 + 64 + 32 + 0 + 8 + 0 + 2 + 1
= 235
(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
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:
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:
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
(2 3 5)10 = (1 1 1 0 1 0 1 1)2
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
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.
( 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.
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).
Remarque: ce code, qui n'est plus utilisé, présente l'inconvénient majeur de ne pas pouvoir
coder (entre autres) les minuscules.
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".
Ce code "standard", est actuellement le plus répandu. Le principe de lecture de la table est
identique à ceux précédant.
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
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.
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
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
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.
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 ])
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.
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
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
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.
Philippe Moreau
Exercices de TDs
(du module Optionnel de DEUG MIAS 2ème Année)
Rappels de numération
Ex2: Convertir de Binaire en Décimal les nombres suivants: 110110 , 1010101 , 1100 ,
100001010
Ex5: Convertir d'Hexadécimal en Binaire les nombres suivants: B5 , A1C , 5D9E , 3F9C
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?
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).
Ex14: (critère de divisibilité) donner des diviseurs (déduction "visuel", sans conversion) du
nombre 101001010
Les nombres
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
Ex22: Donner une représentation des nombres suivants en utilisant le format [5,3] signé: 9,75
-5,25 3,5625
Ex24: Donner une représentation des nombres suivants en utilisant le format [S,4,3]: 2,75
-3,25 12,5
Révision
L'assembleur
Les modes d'adressages - définition d'un programme assembleur (MV68xxx) -
présentation de quelques instructions
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
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
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)
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.
Ex19: Afficher la lettre a, puis la lettre b, passez au début de la ligne suivante pour afficher la
lettre c.