370 likes | 601 Vues
Unité 2: Représentation interne des informations. Objectifs: À la fin de cette unité, - vous saurez comment les caractères et les nombres entiers positifs et négatifs sont représentés dans la mémoire d'un ordinateur.
E N D
Unité 2: Représentation interne des informations • Objectifs: • À la fin de cette unité, • - vous saurez comment les caractères et les nombres entiers positifs et négatifs sont représentés dans la mémoire d'un ordinateur. • - vous saurez comment on effectue les opérations arithmétiques addition et soustraction avec des entiers binaires. • - vous saurez comment effectuer la multiplication et la division binaire • Pour y arriver, vous devrez maîtriser les objectifs suivants : • - effectuer ces opérations arithmétiques sur des entiers dans n'im-porte quelle base, en particulier en binaire et en hexadécimal; 32
Unité 2: Représentation interne des informations • 3.1 Introduction • Types d’information traitées par l’ordinateur : • Nombres, instructions, images, séquences d’images animées, sons, etc., toujours représentées sous forme binaire. Une information élémentaire correspond donc à un chiffre binaire 0 ou 1 appelé bit. • Avantages du binaire : • • facile à réaliser techniquement à l’aide de bistables (systèmes à deux états d’équilibre). • • opérations fondamentales simples à effectuer, sous forme de circuits logiques. 33
Unité 2: Représentation interne des informations • 3.1 Introduction • Types d’information traités : instructions et données. • • Les instructions sont écrites en langage machine et représentent les opérations (e.g. addition, multiplication, etc.) effectuées par l’ordinateur. Elles sont composées de plusieurs champs : • - Le code de l’opération à effectuer (opcode) • - Les opérandes impliqués dans l’opération. • • Les données sont les opérandes sur lesquelles portent les opérations. On distingue les données numériques et les données non numériques (e.g. texte). 34
Unité 2: Représentation interne des informations • Le binaire • 0 0 10 1010 31 1 1111 • 1 1 11 1011 32 10 0000 2 10 12 1100 63 11 1111 • 3 11 13 1101 64 100 0000 • 4 100 14 1110 127 111 1111 5 101 15 1111 128 1000 0000 6 110 16 1 0000 255 1111 1111 • 7 111 17 1 0001 256 1 0000 0000 • 8 1000 18 1 0010 • 9 1001 19 1 0011 • 20 1 0100 • 24 1 1000 35
Unité 2: Représentation interne des informations • Le binaire • En décimal, avec n chiffres, on obtient 10n combinaisons possibles, i.e. on peut compter de 0 à 10n-1. • Exemple : Avec 3 chiffres, on a 103 = 1000 combinaisons possibles et on peut compter de 000 à 999. • En binaire, avec n bits, on obtient 2n combinaisons possibles, i.e. on peut compter de 0 à 2n-1 • Exemple : avec 8 bits, on a 28 = 256 combinaisons possibles et on peut compter de 00000000 à 11111111, i.e. de 0 à 255. 36
Unité 2: Représentation interne des informations • 3.2 Données non numériques • ASCII 7 bits ->128 caractères : • 26 lettres majuscules A - Z • 26 lettres minuscule a - z • 10 chiffres 0 à 9 • 33 caractères de ponctuation • sp,! ” #$%& ’ ()*+,-. /< = >?@ [ ] ^_` { | } ~ • 33 caractères de contrôle : • null, etx, bel, bs, ht, lf, vt, ff, cr, …, del 37
Unité 2: Représentation interne des informations • 3.2 Données non numériques • ASCII étendu Aussi connu sous le nom de ISO- 8859-1 ou ISO latin 1. Définit les caractères ASCII 128 à 256 • 8 bits -> 256 caractères • caractères internationaux • caractères semi-graphiques • Dans les deux cas, les caractères sont représentés dans l’ordinateur par un nombre binaire de 8 bits indiquant l’indice i.e. la position du caractère dans la table ASCII. • Dans le cas de l ’ASCII simple, le nombre doit être inférieur à 128. 38
Unité 2: Représentation interne des informations • 3.2 Données non numériques • Par exemple : • ‘A’ = 6510 = 0100 00012 • ‘B’ = 6610 = 0100 0010 • ... • ‘a’ = 9710 = 0110 0101 • ‘ ‘ = 3210 = 0010 0000 • ‘0’ = 4810 = 0011 0000 • ‘1’ = 4910 = 0011 0001 • ‘2’ = 5010 = 0011 0010 • … • ‘9’ = 5710 = 0011 1001 39
Unité 2: Représentation interne des informations • 3.2 Données non numériques • Les codes ISO 8859-1 à 8859-11 définissent les caractères entre 128 et 255 pour couvrir les besoins de la majorité des pays d’Europe. • UNICODE 16 bits -> 65 536 caractères • Code qui se veut universel et qui contient, en plus de tous les caractères européens, 42 000 caractères asiatiques. Le code ASCII est contenu dans les 128 premiers caractères d’UNICODE. • UNICODE est supporté par Windows NT, Windows 2000, Java, et certains systèmes UNIX, MacOS > 8.5, etc. 40
Unité 2: Représentation interne des informations • 3.2 Données non numériques • ISO/IEC 10646 Deux formats : 16 bits (UCS-2) • ou 32 bits (UCS-4) • UCS-2 équivalent à UNICODE 2.0 • UCS-4 inclut : • Caractères musicaux • Symboles mathématiques • Écritures anciennes telles que les hiéroglyphes. 41
Unité 2: Représentation interne des informations • 3.3 Données numériques • 3.3.1 Entiers positifs ou nuls • 3.3.2 Entiers négatifs 42
Unité 2: Représentation interne des informations • 3.3 Données numériques • 3.3.1 Entiers positifs ou nuls • Systèmes de numération • Représentation pondérée d’un nombre N dans une base B : • N = anBn + an-1Bn-1 + … + a1B + a0 = • où an = 0, 1, … B-1 • Les bases B les plus usitées sont : • B = 10, décimal • B = 2, binaire • B = 16, hexadécimal • B = 8, octal 43
Unité 2: Représentation interne des informations • 3.3 Données numériques • 3.3.1 Entiers positifs ou nuls • Systèmes de numération • Représentation pondérée dans une base B • Exemples : • 154210 = 1 103 + 5 102 + 4 101 + 2 100 • 15428 = 1 83 + 5 82 + 4 81 + 2 80 = 86610 • 1 01102 = 1 24 + 0 23 + 1 22 + 1 21 + 0 20 = 2210 44
Unité 2: Représentation interne des informations • 3.3 Données numériques • 3.3.1 Entiers positifs ou nuls • Décimal Binaire Octal Hexadécimal • 0 0 0 0 • 1 1 1 1 • 2 10 2 2 • 3 11 3 3 • 4 100 4 4 • 5 101 5 5 • 6 110 6 6 • 7 111 7 7 • 8 1000 10 8 • 9 1001 11 9 45
Unité 2: Représentation interne des informations • 3.3 Données numériques • 3.3.1 Entiers positifs ou nuls • Décimal Binaire Octal Hexadécimal • 10 1010 12 A • 11 1011 13 B • 12 1100 14 C • 13 1101 15 D • 14 1110 16 E • 15 1111 17 F • 16 1 0000 20 10 • 17 1 0001 21 11 • 18 1 0010 22 12 • 19 1 0011 23 13 46
Unité 2: Représentation interne des informations • 3.3 Données numériques • 3.3.1 Entiers positifs ou nuls • Remarques • 10B = B quel que soit B : • 102 = 2, 107 = 7, 108 = 8, 1016 = 1610 • Ajouter un 0 à droite (décalage à gauche) = multiplication par B • Enlever le chiffre de droite (décalage à droite ) = • division entière par B 47
Unité 2: Représentation interne des informations • 3.3 Données numériques • 3.3.1 Entiers positifs ou nuls • Représentation hexadécimale • Comme 16 = 24, on peut toujours représenter un nombre binaire en regroupant les bits en groupes de 4 et en écrivant la notation hexadécimale 0 - F pour chacun de ces groupes : • Exemple : • 111 1100 11112 = 7CF16 • Pour indiquer qu’un nombre est en hexadécimal, on utilise le posfixe h ou H, ou le préfixe $, ou encore, en notation C/C++, le préfixe 0x. • 7CFh ou 7CFH, $7CF, 0x7CF 48
Unité 2: Représentation interne des informations • 3.3 Données numériques • Entiers positifs ou nuls • Addition binaire 1 1 1 1 1 1 190 1011 1110 +141 +1000 1101 331 1 0100 1011 1 1 1 1 173 1010 1101 +44 +0010 1100 1101 1001 217 49
Unité 2: Représentation interne des informations • 3.3 Données numériques • Entiers positifs ou nuls • Addition hexadécimale 1 1 1 190 BE +141 +8D 331 1 4B 1 1 173 AD +44 +2C D9 217 50
Unité 2: Représentation interne des informations • 3.3 Données numériques • Entiers positifs ou nuls • Soustraction binaire à la main • 1 1 1 1 • 10110100 • - 10000111 • 00101101 • Quand le chiffre du bas est supérieur à celui du haut, on emprunte 2 au chiffre de gauche suivant et on ajoute ce 2 au chiffre du haut. On fait la soustraction. L’emprunt soustrait 1 au chiffre de gauche. • Voyez l’animation sur le site Web: • http://www.ift.ulaval.ca/~marchand/ift17583/Arithm.html 51
Unité 2: Représentation interne des informations • 3.3 Données numériques • 3.3.2 Entiers négatifs • Notation signe et grandeur • Sur 8 bits, on pourrait garder 1 bit pour le signe et 7 bits pour la grandeur. C’est la notation signe et grandeur que nous utilisons en arithmétique ordinaire. • Par exemple, avec la notation signe et grandeur sur 8 bits, on aurait : • +5 = 0000 0101 • et -5 = 1000 0101 signe grandeur 52
Unité 2: Représentation interne des informations • 3.3 Données numériques • 3.3.2 Entiers négatifs • Compléments à 1 et à 2 • Une autre possibilité est d’utiliser le complément à 1 ou le complément à 2. • Complément à 1 sur 8 bits : • Le complément à 1 est obtenu en inversant tous les bits du nombre : • +5 = 0000 0101 • et -5 = 1111 1010 • Dans le cas du complément à 1, +5 + (-5) = 1111 1111 = -0 53
Unité 2: Représentation interne des informations • 3.3 Données numériques • 3.3.2 Entiers négatifs • Complément à 2 : • Le complément à 2 est obtenu en additionnant 1 au complément à 1 : • +5 = 0000 0101 • et -5 = 1111 1011 (1111 1010 + 1) • Dans le cas du complément à 2, +5 + (-5) = 0000 0000. • Les micro-ordinateurs actuels utilisent tous le complément à 2 sur 8, 16 ou 32 bits pour représenter les nombres négatifs. 54
Unité 2: Représentation interne des informations • 3.3 Données numériques • 3.3.2 Entiers négatifs • La représentation en complément à 2 va de -2n-1 à 2n-1-1 • Avec des motifs de 8 bits : • Nombres positifs • 0000 0000 à 0111 1111 ou encore 0016 à 7F16 = 0 à 127 • Nombres négatifs • 1000 0000 à 1111 1111 ou encore 8016 à FF16 = -128 à -1 • Avec des motifs de 16 bits : • Nombres positifs • 0000 à 7FFF = 0 à 32767 • Nombres négatifs • 8000 à FFFF = -32768 à -1 55
Unité 2: Représentation interne des informations • 3.3 Données numériques • 3.3.2 Entiers négatifs • Avec des motifs de 32 bits : • Nombres positifs • 0000000016 à 7FFFFFFF16 = 0 à 2 147 483 647 • Nombres négatifs • 8000000016 à FFFFFFFF16 = -2 147 483 648 à -1 56
Unité 2: Représentation interne des informations • 3.3 Données numériques • 3.3.2 Entiers négatifs • Complément à 10 • Pour illustrer le principe du complément à 2, on pourrait faire la même chose en base 10. • Sur 4 digits, les nombres 0 à 4999 seraient positifs et les nombres 5000 à 9999 seraient négatifs. Le complément à 10 d’un nombre N s’obtiendrait en faisant 10000 - N ou 9999 - N + 1 : • Ainsi, le complément à 10 de 1000 serait 9000, et • 1000 + 9000 = (1)0000. 57
Unité 2: Représentation interne des informations • 3.3 Données numériques • 3.3.2 Entiers négatifs • Complément à 16 • De la même façon, en notation hexadécimale, on peut utiliser le complément à 16 pour représenter les nombres négatifs. • Sur 8 bits, on l’obtient en soustrayant le nombre de FF16 et en ajoutant 1 au résultat : • 5 = 0516 • -5 = FF16 - 0516 + 0116 = FA16 + 0116 = FB16 = 1111 10112 • Remarquez que c’est le même résultat qu’en complément à 2. • Sur 16 bits : 5 = 000516 • -5 = FFFF16 - 000516 + 000116 = FFFB16 58
0000 0100 +1111 1011 1111 1111 Unité 2: Représentation interne des informations • 3.3 Données numériques • 3.3.2 Entiers négatifs • Soustraction • L’ordinateur effectue la soustraction en additionnant le complément à 2 sur des motifs de 8 bits, 16 bits, 32 bits, etc. • 5 - 4 = 5 + (-4) • 4 - 5 = 4 + (-5) 1 1 1 1 1 1 0000 0101 +1111 1100 (1) 0000 0001 0000 0101 -0000 0100 0000 0001 ou retenue 0000 0100 -0000 0101 (1)1111 1111 ou emprunt 59
0005 • -0004 • 0001 • 0004 • -0005 • (1)FFFF 1 1 1 Unité 2: Représentation interne des informations • 3.3 Données numériques • 3.3.2 Entiers négatifs • Soustraction en hexadécimal avec ou sans le complément à 16 : • Sur 16 bits : • 5 - 4 = 5 + (-4) • 4 - 5 = 4 + (-5) 1 1 1 1 • 0005 • +FFFC • (1)0001 ou retenue 1 • 0004 • +FFFB • FFFF ou emprunt 60
Unité 2: Représentation interne des informations • 3.3 Données numériques • 3.3.2 Entiers négatifs • Attention! Pour les nombres dont le bit le plus significatif est 1, il y a deux interprétations possibles. • Par exemple, sur 8 bits, • 1001 0000 peut représenter • +144 si on le considère comme un nombre non signé • ou -112 si on le considère comme un nombre en complément à 2. • C’est lors de la déclaration d’une variable en mémoire qu’on détermine si le processeur doit la traiter comme signée ou non signée. • char a; // a est considéré comme signé en complément à 2 • unsigned char b; // a est considéré comme non signé 61
Unité 3: Représentation interne des informations • 3.2 Données non numériques • Endianisme • Quand un nombre est représenté sur plusieurs octets, il peut être écrit en mémoire de deux façons : • L’octet de poids fort à l’adresse basse : big-endian • L’octet de poids faible à l’adresse basse : little-endian • Par exemple, le nombre décimal 62 090 s’écrit F28A en hexadécimal. • En little-endian, la mémoire contiendra 8A F2, tandis qu’en big-endian, elle contiendra F2 8A 62
1 1011 1101 11011 00000 11011 11011 101011111 Unité 3: Représentation interne des informations • 3.3 Données numériques • 3.3.1 Entiers positifs ou nuls • Multiplication • La multiplication binaire s’effectue comme la multiplication décimale ordinaire, mais est beaucoup plus simple, puisqu’il n’y a que des 1 et des 0. 63
1B 0D 18F 0D 15F Unité 3: Représentation interne des informations • 3.3 Données numériques • 3.3.1 Entiers positifs ou nuls • Multiplication • On peut également effectuer cette opération en hexadécimal : On utilise à cette fin la table de multiplication hexadécimale du supplément (Appendice 5). 64
101111 / 0100 100 1 0011 0 111 100 1 0111 100 1 011 Unité 3: Représentation interne des informations • 3.3 Données numériques • 3.3.1 Entiers positifs ou nuls • Division • La division binaire s’effectue comme la division décimale ordinaire, mais elle est beaucoup plus simple, puisque les facteurs sont 1 ou 0. • Résultat : 10112, reste 00112 65
Unité 3: Représentation interne des informations • 3.3 Données numériques • 3.3.1 Entiers positifs ou nuls • Division • L’ordinateur effectue cette division au moyen de décalages d’un registre à l’autre. Pour simplifier, utilisons des registres de 6 bits. • Initialement le registre R contient des 0 et le registre D contient le dividende. • On décale D vers R un bit à la fois. Chaque fois que R ≥ Diviseur, on soustrait le diviseur de R et on met 1 à la suite du quotient, sinon, on met 0 à la suite du quotient. On effectue 6 décalages de D. À la fin, R contient le reste. • Voyez l’animation sur le site du cours : • http://www.ift.ulaval.ca/~marchand/ift17583/Arithm.html R D 0 0 0 0 0 0 1 0 1 1 1 1 66
Unité 3: Représentation interne des informations • 3.3 Données numériques • 3.3.1 Entiers positifs ou nuls • Division (101111 / 100) sur 6 bits • R D Décalage no. • 0 0 0 0 0 0 1 0 1 1 1 1 • 0 0 0 0 0 1 0 1 1 1 1 0 Q = 0 1 • 0 0 0 0 1 0 1 1 1 1 0 0 Q = 0 0 2 • 0 0 0 1 0 1 1 1 1 0 0 0 Q = 0 0 0 3 • 0 0 0 1 0 0 • 0 0 0 0 0 1 • 0 0 0 0 1 1 1 1 0 0 0 0 Q = 0 0 0 1 4 • 0 0 0 1 1 1 1 0 0 0 0 0 Q = 0 0 0 1 0 5 • 0 0 0 1 0 0 • 0 0 0 0 1 1 • 0 0 0 1 1 1 0 0 0 0 0 0 Q = 0 0 0 1 0 1 6 • 0 0 0 1 0 0 • 0 0 0 0 1 1 • Q = 0 0 0 1 0 1 1 7 67
7CB / 1C • 70 47 • 0CB • C4 • 07 Unité 3: Représentation interne des informations • 3.3 Données numériques • 3.3.1 Entiers positifs ou nuls • Division • On peut également effectuer la division binaire en hexadécimal. Il faut ici aussi utiliser la table de multiplication hexadécimale. • Exemple : • Réponse : 7CB16 / 1C16 = 4716 reste 7. 68