UEO11 COURS/TD 1
Contenu du semestre
Cours et TDs sont intégrés
L’objectif de ce cours équivalent a 6h de cours, 10h de TD...
1-2 L’ordinateur
Un ordinateur est une machine qui permet d'effectuer des traitements sur des données à
l'aide de programm...
2 - Le codage binaire de l’information
Toute l'information qui transite dans un ordinateur est codée avec des bits ( Binar...
Ex calculer la valeur binaire de 37 en base 10 :
37
1

2
18
0

2
9
1

2
4
0

2
2 2
0 1

37 == 2 x ( ( 2 x 9 ) + 0 ) + 1 ==...
Réponse : 1x27+ 0x26 + 0x25 +1x24 + 1x23 + 1x22 + 1x21 + 0x20
= 1x128 + 0x64 + 0x32 +1x16 + 1x8 + 1x4 + 1x2 + 0x1
= 158

E...
2.3 Opérations logiques
En logique binaire une variable logique (booléenne) est VRAI (TRUE = 1) ou FAUSSE (FALSE
= 0). Une...
- Z est ordonné
- il n'y a ni plus grand ni plus petit élément : tout élément de Z a un prédécesseur et un
successeur.

2....
1111 1111 1111 1100
1111 1111 1111 1101
1111 1111 1111 1110
1111 1111 1111 1111

65 532
65 533
65 534
65 535

en fait il y...
+ 1*27 +1*26 +1*25 +1*24 +1*23 +1*22 +1*21 +1*20
= 1*216 - 1
La représentation décimale de ce nombre est donc Dec(n) = 65 ...
2.4.3 Implémentation des entiers signés
Nous allons étudier la représentation des entiers signés sur deux octets
Le problè...
Soit un nombre n de Z.
Si le nombre est positif et inférieur ou égal à 215 –1 (32 768) on le représente
comme un entier no...
au codage signe+ valeur absolue ?
-33000 est-il représentable ? pourquoi peut on représenter -32 768
quel est le codage de...
(1/B) <= | M | < 1 ou bien M=0
en base 2 a = 0.M * 2e
exemple : 1101,1 qui vaut 13,5 en décimal s’écrit suivant cette conv...
0.8 x 2 = 1.6 donc 0.8 = 1.6 / 2 = 2-1 x 1.6 = 2-1 x 1 + 2-1 x 0.6
0.6 x 2 = 1.2 donc 0.8 = 2-1 x 1 + 2-2 x 1.2
0.2 x 2 = ...
est codé 67, ... Z est codé 90, a est codé 97, b est codé 98, ... 0 est codé 48, 1 est codé 49, ... 9 est
codé 57, ...
Les...
La taille d’une mémoire centrale ou d’un autre support d’information s’exprime en nombre
d’octets. Ced nombre est toujours...
Prochain SlideShare
Chargement dans…5
×

Cours 1

742 vues

Publié le

0 commentaire
1 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
742
Sur SlideShare
0
Issues des intégrations
0
Intégrations
2
Actions
Partages
0
Téléchargements
18
Commentaires
0
J’aime
1
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Cours 1

  1. 1. UEO11 COURS/TD 1 Contenu du semestre Cours et TDs sont intégrés L’objectif de ce cours équivalent a 6h de cours, 10h de TD et 8h de TP est le suivant : - initiation à l’algorithmique notions de bases de programmation variables simples, entrées sorties basiques choix et itérations tableaux 1D Il faut tenir compte du fait que cet enseignement concerne aussi bien des étudiants qui se destinent a faire de la biologie qu’a des étudiants qui s’orienteront vers les mathématiques ou l’informatique…. Il n’y a pas de note de TP mais la présence en TP est obligatoire (appel) et vital pour comprendre l’enseignement et réussir aux contrôles ! 1 – Généralités 1-1 L’informatique Science du traitement de l’information automatiquement « Ensemble de techniques de collecte, de tri , de mise en mémoire, de transmission et de l’utilisation des informations traitées automatiquement à l’aide de programmes mis en œuvre sur ordinateur. » Exemple d’informations : nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux…. Le traitement de l’information consiste à partir d’une information de départ de produire par traitement une nouvelle information de sortie.
  2. 2. 1-2 L’ordinateur Un ordinateur est une machine qui permet d'effectuer des traitements sur des données à l'aide de programmes. Les données (les paramètres du problème, par exemple les notes des étudiants du cours d'informatique) ainsi que le programme (par exemple le calcul de la moyenne des notes) sont fournis à la machine par l'utilisateur au moyen de dispositifs de saisie (le clavier par exemple). Le résultat du traitement est recueilli à la sortie de l'ordinateur (l'écran, l’imprimante) sous forme de texte par exemple. Nous allons étudier maintenant comment est codée l’information dans la mémoire centrale et dans la mémoire auxiliaire.
  3. 3. 2 - Le codage binaire de l’information Toute l'information qui transite dans un ordinateur est codée avec des bits ( Binary digIT) ne prenant que les valeurs 0 et 1. L’information est donc toujours discrète Par exemple pour coder le nombre 13 en binaire, il faut les quatre chiffres binaires 1101. En effet 13 peut être décomposé comme une somme de puissances de 2 13 = 8 + 4 + 1 =1*8+1*4+0*2+1*1 en décimal = 1 * 23 + 1 * 22 + 0 * 21 + 1 * 20 on ne conserve que les coefficients = 1 1 0 1 en binaire Question avec n bits combien de codes différents obtient on ? 2n 2.1 Représentation des informations en binaire Pour coder de l'information , que ce soient des nombres, (PI=3,141592...), du texte (ce cours), des schémas, des images, des sons, des relations ("Pierre est le père de Jacques et le frère de Marie"), les circuits électroniques d'un ordinateur ne peuvent utiliser que des informations en binaire. Montrons d'abord comment il est possible de coder n'importe quel nombre entier naturel IN={0, 1, 2, 3, ... ,1 000, ..., 1 000 000, ...} en binaire. Puis nous en ferons autant pour les entiers signés les décimaux et les caractères. Enfin il faudra montrer que les images, les sons … peuvent aussi se coder en binaire. 2.1.1 Passer du décimal au binaire Il suffit de décomposer un nombre décimal en une somme de puissances de 2. On peut par exemple commencer par écrire la table des premières puissances de 2 : 20 = 1 24 = 16 28 = 256 21 = 2 25 = 32 29 = 512 22 = 2x2 = 4 26 = 64 210 = 1024 = 1K 23 = 2x2x2 = 8 27 =128 211 =2048 …….
  4. 4. Ex calculer la valeur binaire de 37 en base 10 : 37 1 2 18 0 2 9 1 2 4 0 2 2 2 0 1 37 == 2 x ( ( 2 x 9 ) + 0 ) + 1 == 2 x ( ( 2 x ( 2 x 4 + 1 ) ) + 1 == 1 x 25 + 1 x 22 + 1 x 20 == 1 x 25 + 0 x 24 + 0 x 23 + 1 x 22 + 0 x 21 + 1 x 20 soit en base 2 : 1 0 0 1 0 1 Exercice : Montrer que le nombre 131 est une somme de puissances de 2 Reponse : 10000011 Exercice : Donner la représentation binaire des 10 premiers nombres entiers : 0 = 0x20 -> 0; 1=1x20 -> 1 ; 2=1x21 -> 10 3 = 1x2 + 1x1 = 1x21 + 1x20 -> 11 4 = 1x4+ 0x2 + 0x1 = 1x22 + 0x21 + 0x20-> 100 5 = 1x4 + 0x2 + 1x1 = 6= 7= 8= 9= 10 = 2.1.2 Passer du binaire au decimal Le codage binaire a un inconvénient majeur pour l'être humain, son manque de lisibilité... Quelle est la représentation décimale du nombre dont la représentation binaire est : 1001 1110 ?
  5. 5. Réponse : 1x27+ 0x26 + 0x25 +1x24 + 1x23 + 1x22 + 1x21 + 0x20 = 1x128 + 0x64 + 0x32 +1x16 + 1x8 + 1x4 + 1x2 + 0x1 = 158 Exercice : Combien de chiffres binaires faut-il pour représenter le nombre décimal 10000 ? Reponse : 14 211=2048 212=4096 213=8192 214=16384 2.2 Opérations usuelles en binaire Les deux opérations binaires de base sont – l'addition – la multiplication Table d'addition binaire 0+0=0 0+1=1 1+0=1 1 + 1 = 0 avec une retenue de 1 Table de multiplication binaire 0x0=0 0x1=0 1x0=0 1x1=1 Exercice : En utilisant la table d'addition binaire calculez en binaire les nombres suivants : 1001 + 10100 1111 + 1 1111 1111 + 1111 1111
  6. 6. 2.3 Opérations logiques En logique binaire une variable logique (booléenne) est VRAI (TRUE = 1) ou FAUSSE (FALSE = 0). Une expression logique est constituée de plusieurs variables logiques combinées par des connecteurs (opérateurs) logiques : Les opérateurs logiques élémentaires sont : - NON [NOT] - ET [AND] - OU [OR] Table de vérité du OU Table de vérité du ET Table de vérité du NON 0 OU 0 = 0 0 OU 1 = 1 1 OU 0 = 1 1 OU 1 = 1 0 ET 0 = 0 0 ET 1 = 0 1 ET 0 = 0 1 ET 1 = 1 NON 0 = 1 NON 1 = 0 Exercice : Donner la valeur de vérité {VRAI ou FAUX} des assertions suivantes : « 102 est un nombre pair » ET « 102 est divisible par 3 » « 11 est multiple de 3 » ET « 102 est divisible par 3 » « 108 est multiple de 9 » OU « 11 est divisible par 3 » 2.4 Codage des nombres entiers et des nombres réels décimaux L'ensemble des entiers naturels : IN = {0,1,2,3 ,4 ,…….. } - IN est ordonné ; il a un plus petit élément 0 ; - Il n'y a pas de plus grand élément : tout élément a un successeur L'ensemble des entiers relatifs : Z = Z+ U ZZ= {...,-3,-2,-1, 0, 1,2,...}
  7. 7. - Z est ordonné - il n'y a ni plus grand ni plus petit élément : tout élément de Z a un prédécesseur et un successeur. 2.4.1 Opérations sur les entiers Opérateurs unaires : – – Opérateurs binaires : – - (moins) : opposé + – – * – DIV – MOD – / Opérateurs de comparaison : – – – – – = < <= > >= 2.4.2 Implémentation des entiers non signés En raison des limitations d'espace mémoire, on ne peut représenter que quelques nombres. Par exemple si on dispose d’un mot mémoire de 16 bits ( soit deux octets) pour représenter des nombres par exemple alors les différents contenus possibles de la mémoire sont les suivants : Contenu mot 0000 0000 0000 0000 0000 0000 0000 0001 0000 0000 0000 0010 0000 0000 0000 0011 0000 0000 0000 0100 0000 0000 0000 0101 …………………….. …………………….. …………………….. valeur en décimal 0 1 2 3 4 5
  8. 8. 1111 1111 1111 1100 1111 1111 1111 1101 1111 1111 1111 1110 1111 1111 1111 1111 65 532 65 533 65 534 65 535 en fait il y a 216 = 65 536 codes différents et si on veut utiliser un mot mémoire pour coder des informations on sait qu’avec un mot mémoire on ne peut coder que 65536 « choses » différentes. Supposons maintenant qu’on se pose le probléme de coder tous les entiers positifs ou nuls sur ordinateur. Le nombre d’éléments de cet ensemble est infini….pour coder tous les entiers il faudrait donc un nombre infini de bits… et donc une mémoire centrale infinie….ce qui est impensable ! Donc on ne pourra jamais coder tous les entiers positifs. Si on prend un mot on ne peut coder que 65536 choses différentes et donc 65 536 entiers sur l’infinité d’entiers possibles . Si on prend les entiers positifs on a choisi bien sur que 0 c’est le mot mémoire 0000 0000 0000 0000 …… ……………….65 335 c’est le mot mémoire 1111 1111 1111 1111 Exemple pour n = 54710 On décompose 547 en puissances successives de 2 : 54710= 512 + 32 + 2 + 1 = 1*29 +1*25 +1*21 +1*20 et on ne code que les coefficients de la décomposition, la représentation binaire de n est Bin(n) = 0000 0010 0010 0011 Le plus grand nombre entier non signé représentable est donc : 1111 1111 1111 1111 = 1*215 +1*214 +1*213 +1*211 +1*210 +1*29 +1*28
  9. 9. + 1*27 +1*26 +1*25 +1*24 +1*23 +1*22 +1*21 +1*20 = 1*216 - 1 La représentation décimale de ce nombre est donc Dec(n) = 65 536 - 1 = 65 53510 les entiers positifs strictement supérieurs à 65 535 ne sont donc pas représentables….. Maintenant si on prend deux entiers codables par exemple 65 533 et 5 …… Si on veut faire la simple somme et coder le résultat dans un mot on aura un résultat faux Preuve : 65 533 5 soit soit en binaire en binaire somme 1111 1111 1111 1101 0000 0000 0000 0101 --------------------------1 0000 0000 0000 0010 Il reste donc dans le mot mémoire contenant le résultat 0000 0000 0000 0010 soit le codage du nombre 2 ce qui n’est pas le bon résultat….. Il y a eu ce qu’on appelle un dépassement de capacité et le résultat placé dans un mot est faux ! Donc déjà on voit que quand on fait des calculs sur les entiers il faut prévoir les cas ou il y aura dépassement de capacité. Les difficultés à résoudre pour les entiers quelconques sont donc les suivantes : quels entiers sont représentés et comment représenter les négatifs et par conséquent le signe. Exercice TD : Indiquer quels sont les entiers non signés représentables sur un double mot, soit 4 octets Rep : ils vont de 0 à 232-1 soit de 0 à 4 294 967 295
  10. 10. 2.4.3 Implémentation des entiers signés Nous allons étudier la représentation des entiers signés sur deux octets Le problème ici est que d’une part il faut représenter la valeur absolue et d’autre part le signe. Quand on dispose d’un mot mémoire et qu’on fait l’hypothèse qu’il code un entier signé il faut pouvoir reconnaître le signe (+ /-), et donc il est obligatoire qu’un bit sur les 16 bits disponibles sera utilisé pour coder le signe. C’est le bit de gauche (dit de fort poids) qui est utilisé : S’il vaut 1 alors le nombre codé est négatif S’il vaut 0 alors le nombre codé est positif Une représentation utilisée sur les premières machines consistait à coder d’une part le signe sur un bit , d’autre part la valeur absolue sur les 15 bits restants : On code donc le signe 0/1 puis sur 15 bits la valeur absolue qui va donc de 0 à 215-1 (=32 767) On peut donc coder ainsi de –32 767 à + 32 767 Inconvénients de ce codage : - le 0 est codé deux fois +0 -0 0000 0000 0000 0000 1000 0000 0000 0000 - l’additionneur de l’unité centrale est complexe : ex 1 + (-3) s’écrit si l’on pose l’opération d’addition binaire classique: somme 0000 0000 0000 0001 1000 0000 0000 0011 --------------------------1000 0000 0000 0100 ce qui serait le codage de –4 ….le résultat est donc faux Le codage des entiers signés se fait actuellement en « complément à 2 » :
  11. 11. Soit un nombre n de Z. Si le nombre est positif et inférieur ou égal à 215 –1 (32 768) on le représente comme un entier non signé. Si le nombre est négatif et supérieur ou égal à -215 (-32768), le problème est de représenter le signe et de pouvoir passer d'un nombre à son opposé de façon simple. Une méthode très répandue est la méthode du complément à 2. On travaille MODULO 216 On représente Bin(216 + n) = 65 536 - 547 = 64 989 = 1111 1101 1101 1101 Une vérification de l'expression calculée consiste à effectuer une somme bit à bit de 547 et de –547 Si la représentation est correcte on doit trouver 0 : 0000 0010 0010 0011 + 1111 1101 1101 1101 _____________________________ résultat 0000 0000 0000 0000 Le report (ou retenue) n'est bien sûr pas représenté. Donc un nombre entier signé représenté sur 16 bits dont le bit de poids fort est à 1 doit être considéré comme un nombre NEGATIF : sa valeur est -(216 - Dec(n2)) Algorithme de conversion d'un nombre en binaire complément à 2 sur un octet : Trouver l'opposé d'un nombre en complément à 2 : Soit n = 0000 0101 = 5 Son opposé est -5 obtenu en inversant tous les 1 en 0 et tous les 0 en 1 et en ajoutant 1: 0000 0101 --> 1111 1010 + 1 = 1111 1011 = -5 Vérification : 5 + (-5) = 0 0000 0101 + 1111 1011 ---------0000 0000 report ignoré Exercice : Trouver les représentations binaires en complément à deux sur deux octets des nombres suivants : 31000; -31000 . faire l’addition binaire des deux représentations …conclusion par rapport
  12. 12. au codage signe+ valeur absolue ? -33000 est-il représentable ? pourquoi peut on représenter -32 768 quel est le codage de 0 (essayer +0 et –0) Les nombres réels ( ne pas faire en cours !!) L'ensemble IR ne peut pas être représenté de façon complète en machine. On retrouve les mêmes difficultés pour représenter les réels que pour représenter les entiers : l'ordinateur n'a pas une mémoire infinie. On représente donc un sous-ensemble fini de IR.Mais on essaye de représenter a la fois des nombres très grands , des très petits et ceux « d’usage courant » En général quand on code un nombre réel, il y’aura donc une erreur ( le réel sera codé à «ε prés ») . Opérations sur les réels : Opération unaire : - (opposé) Opérations binaires :+ - * / Comparaisons = < > <= >= Fonctions réelles : cos sin log puiss sqrt La notation scientifique normalisée On appelle notation normalisée d'un réel celle où le premier chiffre significatif est placé immédiatement après la virgule (ou le point décimal). Exemple : 1989 = 0.1989 E4 Pour stocker ce nombre en mémoire, il suffit de stocker les informations : exposant 4 et la partie décimale appelée mantisse 1989 Exemple : écrire PI en notation normalisée π E1 = 3.1415926535... = 0.31415926535 Représentation des nombres réels en binaire Tout nombre réel peut être représenté dans une base quelconque : a = 0.M * Be avec B : base ; e : exposant ; M : mantisse (qui peut être une suite infinie de chiffres...) En notation normalisée on a les conditions :
  13. 13. (1/B) <= | M | < 1 ou bien M=0 en base 2 a = 0.M * 2e exemple : 1101,1 qui vaut 13,5 en décimal s’écrit suivant cette convention : 0 , 11011 x 2 4 en mélangeant écriture binaire et décimale Les réels sont représentés en machine selon un standard défini par l' IEEE Un réel est décomposé en signe + - s exposant caractéristique E partie décimale mantisse F x = (-1) s * 2E-127 * 1, F En général on représente un réel sur 4 octets (32 bits) le bit 0 de poids fort (le plus à gauche) est le signe s, soit 0 (positif) ou 1 (négatif) les bits 1 à 8 sont la caractéristique E qui est représentée par un entier binaire sur 8 bits décalé de la valeur 127 les bits 9 à 31 sont pour exprimer la mantisse F en binaire, Exemple : 0.8 sera codé : s=0 E=126 F . ........ ....................... 0 01111110 10011001100110011001100 codage binaire . ........ ....................... 0 1 8 9 31 n° de bit Décomposition d'un nombre réel décimal en binaire Soit le nombre 0.8 à convertir en binaire. On constate d’abord que son signe est positif, donc S=0. On cherche ensuite à le décomposer en une somme de puissances de 2. 0.8 = 20 x 0.8
  14. 14. 0.8 x 2 = 1.6 donc 0.8 = 1.6 / 2 = 2-1 x 1.6 = 2-1 x 1 + 2-1 x 0.6 0.6 x 2 = 1.2 donc 0.8 = 2-1 x 1 + 2-2 x 1.2 0.2 x 2 = 0.4 donc 0.8 = 2-1 x 1 + 2-2 x 1 + 2-3 x 0.4 0.4 x 2 = 0.8 donc 0.8 = 2-1 x 1 + 2-2 x 1 + 2-3 x 0 + 2-4 x 0.8 0.8 x 2 = 1.6 donc ... on retrouve une expression déjà rencontrée qui va se répéter infiniment 0.8 = (-1) x 1. 10011001100110011.... x 2-1 Finalement on ne code que les chiffres binaires de la décomposition : signe = 0 car 0.8 est positif E = 126 car 126-127 = -1 F = 10011001100110011.... Montrer qu’on a ainsi codé non pas 0,8 mais une valeur très approchée de 0,8 0 Exemple 2 : 0.75 en base 2 donnera 0.75 x 2 = 1.5 donc 0.75 = 2-1 x 1.5 0.5 x 2 = 1.0 donc 0.75 = 2-1 x 1 + 2-2 x 1.0 0.75 = (-1)° x 2 126-127 x 1.10000000000000000000000 Exercice : Montrer que le nombre décimal 0.1 n’a pas de représentation finie en binaire. Combien de nombres réels sont ils représentés sans erreur ? Réels en double précision En augmentant le nombre d'octets attribués à la représentation des réels, on améliore la précision en consacrant plus de bits à la mantisse, mais on n'augmente pas l'intervalle des réels représentés car on conserve le même nombre de bits pour la caractéristique. Codage des informations non numériques Textes Les textes peuvent être représentés en binaire à condition d'associer à chaque lettre de l'alphabet une représentation numérique, par exemple son rang dans l'ordre alphabétique : A serait codé1 ; B,de rang 2 serait codé 10 en binaire; C codé 11, etc. Mais ce codage est insuffisant car il faut aussi pouvoir coder les signes de ponctuation . , ; ? ! , distinguer les minuscules des MAJUSCULES, les caractères accentués, etc. La table ASCII (American Standard Code for Interexchange Information) propose un codage de 128 caractères différents sur 7 bits. Dans la table ASCII la lettre A est codée 65, B est codé 66, C
  15. 15. est codé 67, ... Z est codé 90, a est codé 97, b est codé 98, ... 0 est codé 48, 1 est codé 49, ... 9 est codé 57, ... Les caractères accentués des langues européennes ont nécessité l'ajout d'un huitième bit de codage, d'où la table ASCII étendue avec 256 caractères. Exercice : Donner le contenu binaire d’un octet contenant le code ASCII du ‘a’ C’est la valeur 97 en base 10 soit 1100001 en binaire D’ou 01100001 Quelques définitions sur le stockage et le codage : 1 octet ou byte : ensemble de 8 bits 1 mot mémoire : le mot mémoire est une unité de stockage de base pour un ordinateur. Chaque ordinateur dispose d’une taille de mot mémoire particulière en général les PC actuels ont des mots mémoire de 32 bits soit 4 octets, mais certaines machines ont des mots mémoire plus grands.
  16. 16. La taille d’une mémoire centrale ou d’un autre support d’information s’exprime en nombre d’octets. Ced nombre est toujours une puissance de 2 Ex : 1 Koctet -> kilo octets -> 1024 octets -> 210 octets 1 Moctets -> méga octets -> 1024 koctets -> 220 octets 1 Goctets -> gigaoctets -> 1024 Moctets -> 230 octets 1 Toctets -> teraoctets ……… quelques mots clé du langage C ( ensupposant être sur une machine à mots de 16 bits ?) code ASCII 8 bits char entiers signés 16 bits short entiers signés 32 bits int entiers non signés (16/32) unsigned (short/:int) flottants IEEE 32 bits float flottants IEEE 64 bits double

×