La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Cours 2 2. Représentation et traitement des informations Le matériel

Présentations similaires


Présentation au sujet: "Cours 2 2. Représentation et traitement des informations Le matériel"— Transcription de la présentation:

1 Cours 2 2. Représentation et traitement des informations Le matériel
28/08/2018 2. Représentation et traitement des informations Systèmes de numération et représentation des nombres (entiers) Arithmétique binaire sur les entiers Le matériel Chapitre 2 de CS et CSA Synthèse du professeur sif-1053

2 Conversion des données et représentation
28/08/2018 Computer Input device A 1+2=3 math Code ASCII Code binaire sif-1053

3 Formats de données Ordinateurs Communication humaine
28/08/2018 Ordinateurs Traitent des données exclusivement sous forme binaire Communication humaine Sous forme du language, d’images et de sons Formats des données: Spécifications pour convertir les données dans un format utilisable par l’ordinateur Définit les différentes approches prises pour représenter, stocker et traiter par ordinateur les données humaines sif-1053

4 Source des données Input binaire Input analogique
28/08/2018 Input binaire Input de données discrètes (ex: suite caractères) Example: Input au clavier A 1+2=3 math Le clavier génère un code binaire pour chaque touche Input analogique Données continues comme le son et l’image Requiert des convertisseurs A/D pour convertir ces données en format binaire sif-1053

5 Représentation de données communes
28/08/2018 Type de données Standard(s) Alphanumérique Unicode, ASCII, EDCDIC Image (bitmapped) GIF (graphical image format) TIF (tagged image file format) PNG (portable network graphics) Image (vectorisée) PostScript, JPEG, SWF (Macromedia Flash), SVG Graphiques et fonts PostScript, TrueType Son WAV, AVI, MP3, MIDI, WMA Description de Page PDF (Adobe Portable Document Format), HTML, XML Vidéo Quicktime, MPEG-2, RealVideo, WMV sif-1053

6 Exemple de format (.wav)
28/08/2018 Échantillonnage typique: 44.1KHz Amplitude: 8 bits ou 16 bits ou 2 X16 bits (stéréo) sif-1053

7 Le système décimal 28/08/2018 Pourquoi les ordinateurs ne fonctionnent pas en base 10 ? Représentation des nombres en base 10 Basé sur les dix doigts des mains (digits) Représentation naturelle pour les transactions financières difficile de représenter $1.20 en point flottant Facile d’utilisation en notation scientifique X 104 Implémentation électronique Difficile à emmagasiner Difficile à transmettre Difficile de construire des circuits avec des logiques à 10 niveaux sif-1053

8 Le système décimal 28/08/2018 Le système décimal est le système de numération le plus communément répandu dans notre monde. Il est fondé sur l'utilisation de 10 caractères différents qui représentent les valeurs de nombres. Généralement un système de numération nous indique, de par son appellation, le nombre de caractères différents sur lesquels il est fondé. Les dix caractères du système décimal sont: 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , et 9 sif-1053

9 Ainsi le nombre 6321 correspond à 103 102 101 100 6 3 2 1
28/08/2018 En utilisant une notation fondée sur les puissances successives de 10, on peut représenter le poids de la première colonne d’un nombre sous la forme 100, celui de la seconde, 101, celui de la troisième, 102, etc. On remarque ainsi que le poids de chaque colonne s'exprime par la base élevée à une certaine puissance qui n'est autre que la position de la colonne. Ainsi le nombre 6321 correspond à sif-1053

10 28/08/2018 L'évaluation que nous obtenons à partir de cette représentation s'obtient de la manière suivante: 6x x x x100 = 6321 sif-1053

11 Ainsi le nombre 6321. 564 correspond à 103 102 101 100 10-1 10-2 10-3
28/08/2018 Nous pouvons aussi représenter des nombres réels ayant une partie entière et une fractionnaire. Ainsi le nombre correspond à sif-1053

12 28/08/2018 L'évaluation que nous obtenons à partir de cette représentation s'obtient alors de la manière suivante: 6x x x x100 + 5x x x10-3 = sif-1053

13 Le système binaire (Pourquoi ???)
28/08/2018 Les premiers ordinateurs fonctionnaient en décimal Mark I et le ENIAC John Von Neumann propose le traitement des données en binaire (1945) Simplification du design des ordinateurs Permet de représenter autant les données que les instructions Relation naturelle entre la notion d’interrupteur on/off et les opérations en logique Booléenne On Off True False Yes No 1 sif-1053

14 Le système binaire Représentation des nombres en base 2
28/08/2018 Représentation des nombres en base 2 => => [0011]…2 X 104 => X 213 Implémentation électronique Facile à emmagasiner dans des circuits bistables Transmission plus fiable sur des liens bruités Implémentation directe des opérations arithmétiques 0.0V 0.5V 2.8V 3.3V 1 sif-1053

15 Le système binaire 28/08/2018 A de nombreux égards, le système binaire est plus simple que le système décimal. Le système binaire ne comporte que deux caractères et il est utilisé en électronique numérique parce que les circuits ne peuvent prendre que deux états. Le plus souvent, on utilise les caractères 0 et 1. Évaluons un nombre binaire afin de trouver sa valeur dans le système décimal, 1x25+0x24+1x23+1x22+0x21+1x20 = 4510 sif-1053

16 an-1x2n-1+an-2x2n-2+….+a2x22+a1x21+a0x20 = N10
Le système binaire 28/08/2018 Forme générale de la conversion binaire-décimale (partie entière) an-1x2n-1+an-2x2n-2+….+a2x22+a1x21+a0x20 = N10 sif-1053

17 a-1x2-1+a-2x2-2+….+a-m+1x2-m+1+a-mx2-m = M10
Le système binaire 28/08/2018 Nous pouvons aussi rencontrer des nombre binaire réels Évaluons un nombre binaire réel afin de trouver sa valeur dans le système décimal, 1x25+0x24+1x23+1x22+0x21+1x20 0x2-1+1x2-2+1x2-3 = Forme générale de la conversion binaire-décimale (partie fractionnaire) a-1x2-1+a-2x2-2+….+a-m+1x2-m+1+a-mx2-m = M10 sif-1053

18 Le système binaire Les puissances de 2 212 = 4096 2-1 = 0.5
28/08/2018 Les puissances de 2 212 = = 211 = = 210 = = 29 = = 28 = = 27 = = 26 = 64 25 = 32 24 = 16 23 = 22 = 21 = 20 = sif-1053

19 28/08/2018 Dans le système décimal chaque position porte le nom de chiffre ou, plus précisément, de chiffre décimal. Dans le cas du système binaire, le nom attribué à chaque position est bit (ce terme provient de binary digit). En traitant des nombres binaires, les termes BLMS (bit le moins significatif) et BLPS (bit le plus significatif) reviennent souvent. Il s'agit là de formes qui sont analogues à celles que l'on utilise dans le langage décimal où l'on parle de chiffres le plus, ou le moins, significatifs. Le BLPS est donc le bit le plus à gauche. sif-1053

20 Conversion binaire-décimal
28/08/2018 La procédure de conversion est simple: il suffit d'additionner entre eux les poids de tous les bits qui ont 1 pour valeur. Convertir le nombre binaire en décimal 20 = 21 = = = = = = 64 = 128 = sif-1053

21 Conversion décimal-binaire
28/08/2018 = ?2 Division Reste 57/2 = BLMS 28/2 = 14/2 = 7/2 = 3/2 = 1/2 = BLPS D'où = sif-1053

22 Conversion décimal-binaire (Justification)
28/08/2018 La conversion décimale-binaire entière est une succession de divisions entières par 2 Étape 1 N=an-1x2n-1+an-2x2n-2+….+a2x22+a1x21+a0x20 N=(an-1x2n-2+an-2x2n-3+….+a2x21+a1)X2+a0 N1(quotient) (reste) } } sif-1053

23 Conversion décimal-binaire (Justification)
28/08/2018 La conversion décimale-binaire entière est une succession de divisions entières par 2 Étape 2 N1=(an-1x2n-3+an-2x2n-4+….+a2)X2+a1 N2(quotient) (reste) } } sif-1053

24 Conversion décimal-binaire
28/08/2018 = ?2 Multiplication Partie entière 2 x = BLPS 2 x = 2 x = 2 x = 2 x = 2 x = BLMS D'où = sif-1053

25 Conversion décimal-binaire (Justification)
28/08/2018 La conversion décimale-binaire fractionnaire est une succession de multiplications par 2 Étape 1 M = a-1x2-1+a-2x2-2+….+a-m+1x2-m+1+a-mx2-m 2*M = a-1+(a-2x2-1+….+a-m+1x2-m+2+ a-mx2-m+1) partie entière M1 } } sif-1053

26 Conversion décimal-binaire (Justification)
28/08/2018 La conversion décimale-binaire fractionnaire est une succession de multiplications par 2 Étape 2 2*M1= a-2+(a-3x2-1+….+a-m+1x2-m+3+ a-mx2-m+2) partie entière M2 } } sif-1053

27 Le système octal 28/08/2018 Comme son nom l'indique le système octal est un système de numération à base 8. Ce système est construit sur 8 chiffres différents qui sont les caractères 0, 1, 2, 3, 4, 5, 6, et 7. Nous savons qu'il n'existe pas de système électronique qui utilise huit états différents de la manière dont l'électronique numérique s'organise autour de deux états. Ce système n'est donc pas une nécessité, il constitue simplement un moyen commode pour exprimer les nombres binaires. sif-1053

28 28/08/2018 Huit, comme nous le savons, est la troisième puissance de deux, soit 8 = Il en résulte que chacun des huit caractères du système octal (0 à 7) peut être représenté par un nombre binaire de 3 bits de longueur. Les nombres binaires de 3 bits vont de à 111. sif-1053

29 28/08/2018 Pour écrire un nombre binaire sous sa forme en octal, il suffit de grouper les bits trois par trois, en partant du bit le moins significatif (BLMS), puis de convertir chaque groupe de trois en leur équivalent octal. Par exemple, pour convertir le nombre binaire en octal, nous partons du BLMS et nous groupons les caractères trois par trois: sif-1053

30 28/08/2018 Nous remplaçons maintenant chaque groupe de trois par le chiffre équivalent en octal: et, par conséquent, est égal à sif-1053

31 Le système hexadécimal
28/08/2018 Une fois introduit le système octal, le système hexadécimal apparaît à la fois simple et évident. Il s'appuie sur seize caractères différents et l'usage conventionnel a conduit au choix des caractères: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, et F. 16 est la puissance quatrième de 2 (soit 16=24). Il en résulte qu'un caractère hexadécimal peut servir de notation abrégée à un nombre binaire de 4 bits. sif-1053

32 28/08/2018 Soit le nombre binaire à convertir, l'opération de groupage donne: Remarquer que, comme précédemment, on ajoute des 0 non significatifs de manière à constituer des groupes de 4 bits. Et le remplacement des groupes de 4 bits par leur équivalent hexa conduit à: A F D et = 2AFD16 sif-1053

33 28/08/2018 Le système hexadécimal présente un avantage particulier sur le système octal. En effet, la majorité des ordinateurs utilisent des mots de 8, 16, 32 ou 64 bits, ce qui signifie que les machines utilisent des mots dont la longueur est un multiple de 4 bits. Mais souvenez-vous toujours que ces deux notations, octale et hexa, ne sont que des manières commodes d'écrire des nombres binaires. L'ordinateur travaille sur des nombres binaires, pas des nombres en octal ou hexadécimal. sif-1053

34 Codage des octets Binaire: 000000002 à 111111112 Décimal: 010 à 25510
28/08/2018 Octet => 8 bits Binaire: à Décimal: à Hexadécimal: à FF16 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 8 1000 9 1001 A 10 1010 B 11 1011 C 12 1100 D 13 1101 E 14 1110 F 15 1111 Hex Decimal Binary sif-1053

35 Représentation des caractères (ASCII, 7 bits)
28/08/2018 Représentation des caractères (ASCII, 7 bits) MSD LSD 1 2 3 4 5 6 7 NUL DLE SP @ P p SOH DC1 ! A Q a W STX DC2 B R b r ETX DC3 # C S c s EOT DC4 $ D T d t ENQ NAK % E U e u ACJ SYN & F V f v BEL ETB G g w 8 BS CAN ( H X h x 9 HT EM ) I Y i y LF SUB * : J Z j z VT ESC + ; K [ k { FF FS , < L \ l | CR GS - = M ] m } SO RS . > N ^ n ~ SI US / ? O _ o DEL 7416 sif-1053

36 Représentation des caractères (EBCDIC, 8 bits)
28/08/2018 Représentation des caractères (EBCDIC, 8 bits) sif-1053

37 Représentation des caractères (Unicode, 16 bits)
28/08/2018 Représentation des caractères (Unicode, 16 bits) 128 premiers codes comme le code ASCII sif-1053

38 28/08/2018 Mots machine (words) Mot machine => dimension des registres internes Dimension de base des entiers Incluant les adresses Machines usuelles à 32 bits (4 octets) Plage d’adresses limitée à 4GB Trop petit pour les applications gourmandes en mémoire Machines puissantes à 64 bits (8 octets) Plage d’adresses  1.8 X 1019 bytes Machines supportent des formats de données multiples Fractions ou multiples de mots machines Nombre entier d’octets sif-1053

39 Organisation de la mémoire en mots
28/08/2018 Organisation de la mémoire en mots Les adresses spécifient la localisation de chaque octet d’information dans la mémoire Pour localiser un mot d’information de 32 bits ou 64 bits il faut spécifier l’adresse du premier octet composant le mot recherché Les adresses de mots successifs diffèrent de 4 (32-bit) ou 8 (64-bit) octets sif-1053

40 Organisation de la mémoire en mots
28/08/2018 Organisation de la mémoire en mots 32-bit Words 64-bit Words Bytes Addr. 0000 Addr = 0000 0001 0002 Addr = 0000 0003 0004 Addr = 0004 0005 0006 0007 0008 Addr = 0008 0009 0010 Addr = 0008 0011 0012 Addr = 0012 0013 0014 0015 sif-1053

41 Représentations des données
28/08/2018 Dimensions des objets en C (Octets) C Data Type Compaq Alpha Typical 32-bit Intel (IA32) int long int char short float double long double /12 char * Ou pour tout autre pointeur sif-1053

42 Représentations des données
28/08/2018 Dimensions des objets en C (Octets) machine 64 bits sif-1053

43 Ordre des octets Question importante ??? Conventions Exemple
28/08/2018 Question importante ??? Comment les octets d’un mot sont-ils ordonnés en mémoire ? Conventions Alphas, PC’s sont “Little Endian” Octet le moins significatif associé à l’adresse la plus basse Sun’s, Mac’s sont “Big Endian” Octet le moins significatif associé à l’adresse la plus haute Exemple Une variable x à une représentation sur 4 octets 0x L’adresse est donnée en langage C par l’opération unaire &x est 0x100 sif-1053

44 Ordre des octets Big Endian 01 23 45 67 Little Endian 67 45 23 01
28/08/2018 Big Endian 0x100 0x101 0x102 0x103 01 23 45 67 Little Endian 0x100 0x101 0x102 0x103 67 45 23 01 sif-1053

45 Observation des représentations de données
28/08/2018 Code C pour imprimer la représentation des octets composants un objet quelconque La conversion d’un type à un type unsigned char * crée un vecteur d’octet typedef unsigned char *pointer; void show_bytes(pointer start, int len) { int i; for (i = 0; i < len; i++) printf("0x%p\t0x%.2x\n", start+i, start[i]); printf("\n"); } Directives du printf(): %p: impression d’un pointeur %x: impression en hexa sif-1053

46 show_bytes Exemple d’exécution
28/08/2018 show_bytes Exemple d’exécution #include <stdio.h> void show_bytes(pointer start, int len); void main() { int a = 15213; printf("int a = 15213;\n"); show_bytes((pointer) &a, sizeof(int)); } Opérateur unaire donnant une adresse Opérateur unaire donnant la dimension d’un objet en octet Résultats: int a = 15213; 0x11ffffcb8 0x6d 0x11ffffcb9 0x3b 0x11ffffcba 0x00 0x11ffffcbb 0x00 sif-1053

47 Notions de programmation en langage C
28/08/2018 Notions de programmation en langage C Structure générale d’un programme C inclusion des fichiers en-tête (.h); déclaration des constantes; déclaration des types; déclaration de variables globales; définition des fonctions et procédures; fonction principal (main); sif-1053

48 Notions de programmation en langage C
28/08/2018 Notions de programmation en langage C Inclusion des fichiers en-têtes (.h) Permet d’inclure (#include) lors de la phase de précompilation d’un programme source, le contenu d’un fichier d’en-tête Les fichiers d’en-tête peuvent contenir des directives de précompilation (ex: #define, #include), des définitions de types, des définitions de structure, et des prototypes de fonctions En langage C il existe un certain nombre de fichiers d’en-tête standard qui sont inclus par des directives de la forme: #include <stdio.h> /* prototype des fonctions d’I/O */ #include <math.h> /* prototype des fonctions mathématiques */ #include <string.h> /* prototype des fonctions de traitement de chaînes de caractères */ sif-1053

49 Notions de programmation en langage C
28/08/2018 Notions de programmation en langage C Déclaration des constantes Permet la substitution d’une chaîne de caractères quelconque dans le code source d’un programme lors de la phase de précompilation Par exemple: #define SURFACE #define VRAI 1 #define FAUX 0 #define DIM Déclaration des types Permet de définir un nouveau type typedef unsigned char pixel; typedef unsigned char *pointeur; pixel image[1024][1024]; pixel image[DIM][DIM]; sif-1053

50 Notions de programmation en langage C
28/08/2018 Notions de programmation en langage C Déclaration des fonctions et procédures Permet de déclarer une fonction Type de l’objet retourné Nom de la fonction Type et nom des arguments Représente l’en-tête de la fonction Par exemple: void show_bytes(pointer start, int len) Fonctions et passage de paramètres En langage C, nous pouvons passer des informations aux fonctions via son interface et ce de deux façons distinctes: Passage par valeur: valeurs actuelles sont passées Passage par référence (adresse): pointeurs sont passés sif-1053

51 Notions de programmation en langage C
28/08/2018 Notions de programmation en langage C Les pointeurs ptr char *ptr; char car; ptr = (unsigned char *) malloc(8); car = ptr[1]; car = *(ptr+1); sif-1053

52 L'arithmétique binaire
28/08/2018 Nous allons, tout d'abord, revoir l'addition et la soustraction décimales parce que l'arithmétique binaire ressemble beaucoup à l'arithmétique décimale. En second lieu, l'on étudie comment l'ordinateur exprime les nombres binaires positifs et négatifs, et nous introduisons un système connu sous le nom de l'arithmétique selon la notation du complément à 2. L'on passe ensuite à la multiplication et à la division binaires pour constater que la multiplication n'est qu'une suite d'additions, la division n'étant qu'une suite de soustractions. sif-1053

53 28/08/2018 Addition sif-1053

54 28/08/2018 Table d ’addition sif-1053

55 28/08/2018 Soustraction sif-1053

56 28/08/2018 Table de soustraction sif-1053

57 Les nombres négatifs 28/08/2018 Quand on porte son regard sur les nombres binaires, il apparaît tout d'abord que les seuls nombres que l'on puisse représenter dans cette notation sont les entiers positifs. Peut-on, alors, examiner des nombres négatifs? Comment? Plusieurs méthodes ont été utilisées pour représenter les nombres négatifs, mais la plupart d'entre elles ne conviennent pas bien à l'électronique binaire de l'UAL (unité arithmétique et logique des ordinateurs). Ces essais infructueux ont, cependant, conduit à la mise au point d'un système bien adapté. sif-1053

58 28/08/2018 Un des premiers systèmes utilisés était celui de la valeur absolue et du signe. Dans cette méthode le bit le plus significatif du nombre binaire est utilisé comme bit de signe. La règle appliquée est la suivante, si le bit le plus significatif est 0, le nombre est positif, si c'est 1, le nombre est négatif. Binaire Décimal sif-1053

59 Signe et valeur absolue
28/08/2018 5 -2 3 0101 + 1010 ?111 sif-1053

60 28/08/2018 La notation du complément à "1" est une autre représentation, où le bit le plus significatif à 0 signifie positif, et à 1 négatif. Dans cette notation, tous les bits d'un nombre négatif sont complémentés, c'est-à-dire que tous les bits à 1 sont mis à 0 et réciproquement. Cette procédure modifie également le bit de signe, ce qui transforme le BLPS en un 1. Bien que la génération du complément à 1 soit facile, cette notation présente un certain nombre de désavantages, elle rend le travail difficile et entraîne l'existence de deux représentations pour zéro, soit tous les bits à 1, soit tous les bits à 0. sif-1053

61 La notation du complément à « 1 »
28/08/2018 1 1 5 -2 3 0101 + 1101 0010 1 1 0011 sif-1053

62 La notation du complément à 2
28/08/2018 La notation du complément à 2 est une représentation des nombres signés qui est largement répandue aujourd'hui parmi les manufacturiers d'ordinateurs. Elle résout le problème de la double expression du zéro. Dans la notation du complément à 2, un nombre négatif est représenté en prenant le complément à 1 du même nombre positif et en lui ajoutant 1. On peut donc représenter tous les nombres décimaux compris entre et (zéro compris) par des nombres binaires à 8 bits (octets). sif-1053

63 0000 0000 +0 0 Nombre binaire Équivalent décimal Équivalent
de 8 bits signé selon la notation décimal du complément à 2 non signé 28/08/2018 sif-1053

64 Pour vous convaincre 28/08/2018 La simplicité de cette notation peut être illustrée en opérant une soustraction. Soustraire, c'est tout simplement exprimer dans la notation du complément à 2 le terme que l'on désire soustraire et l'ajouter au terme dont on désire le soustraire. Le terme positif étant également représenté dans la notation du complément à deux. La différence est alors exprimée dans la notation du complément à 2, c'est-à-dire que si elle est positive, le BLPS est Si la différence est négative, le BLPS est 1. sif-1053

65 0001 0111 +2310 (not. comp. 2 : nc2) 1110 1000 Complément à 1 de 2310
Ajouter 1 (nc2) (nc2) (nc2) (nc2) Rejeter la retenue 28/08/2018 sif-1053

66 (nc2) Complément à 1 de 3410 Ajouter 1 (nc2) (nc2) (nc2) (nc2) Différence négative puisque BLPS = 1 28/08/2018 sif-1053

67 Codage des entiers En C un short a 2 octets de long Unsigned
28/08/2018 Unsigned Complément à 2 short int x = ; short int y = ; Bit de signe En C un short a 2 octets de long Complément à 2 de ~X sif-1053

68 Codage des entiers La négation d’un entier s’obtient selon la règle:
28/08/2018 Complément à 2 La négation d’un entier s’obtient selon la règle: Prendre le complément booléen de chaque bit d’un entier Considérez le résultat comme un entier binaire non signé et ajoutez 1 Une séquence de n bits aw-1 aw-2 … a1 a0 est interprétée comme un entier A en complément à 2: sif-1053

69 Codage des entiers 28/08/2018 Formons le complément bit à bit a’w-1 a’w-2 … a’1 a’0 et traitons le comme un entier non signé en lui ajoutant 1 qui donne un entier B en complément à 2: Nous voulons alors prouver que A = -B, que A + B = 0 : sif-1053

70 Intervalles des valeurs
28/08/2018 Valeurs complément 2 TMin = –2w–1 100…0 TMax = 2w–1 – 1 011…1 Autres Valeurs Minus 1 111…1 Valeurs Unsigned UMin = 0 000…0 UMax = 2w – 1 111…1 Valeurs pour W = 16 sif-1053

71 Valeurs pour différents mots
28/08/2018 Observations |TMin | = TMax + 1 Intervalle Asymmétrique UMax = 2 * TMax + 1 Programmation C #include <limits.h> Constantes  ULONG_MAX  LONG_MAX  LONG_MIN sif-1053

72 Valeurs pour différents mots
28/08/2018 Programmation C #include <limits.h> //voir le contenu du fichier sif-1053

73 Conversion d’objets Signed à Unsigned
28/08/2018 C permet la conversion d’objets Signed à Unsigned Résultat de la conversion Pas de changement de la représentation binaire Valeurs positives inchangées ux = 15213 Valeurs négatives deviennent positives uy = 50323 short int x = ; unsigned short int ux = (unsigned short) x; short int y = ; unsigned short int uy = (unsigned short) y; sif-1053

74 Conversion d’objets Signed à Unsigned
28/08/2018 + 2w Dangereux de faire des erreurs unsigned i; for (i = cnt-2; i >= 0; i--) a[i] += a[i+1]; Si cnt == 1 sif-1053

75 Conversion d’objets Signed à Unsigned (vice-versa)
28/08/2018 -2w sif-1053

76 Addition de valeurs unsigned
28/08/2018 u • • • Opérandes: w bits + v • • • Somme vraie: w+1 bits u + v • • • Retenue éliminée: w bits UAddw(u , v) • • • Fonction d’addition standard La retenue en sortie est ignorée Implémentation de l’arithmétique modulo s = UAddw(u , v) = u + v mod 2w sif-1053

77 Addition de valeurs unsigned
28/08/2018 sif-1053

78 Addition de valeurs unsigned
28/08/2018 sif-1053

79 Addition de valeurs unsigned
28/08/2018 Overflow sif-1053

80 Addition de valeurs complément 2
28/08/2018 u • • • Opérandes: w bits + v • • • Somme vraie: w+1 bits u + v • • • Retenue éliminée: w bits TAddw(u , v) • • • TAdd() et UAdd() ont un comportement identique au niveau des bits Addition de nombres Signed vs. Unsigned: int s, t, u, v; s = (int) ((unsigned) u + (unsigned) v); t = u + v Donne: s == t sif-1053

81 Addition de valeurs complément 2
28/08/2018 (NegOver) (PosOver) sif-1053

82 Addition de valeurs complément 2
28/08/2018 Negative overflow Positive overflow sif-1053

83 Addition de valeurs complément 2
28/08/2018 Détection automatique des ovf Sachant que s = TAddw(u , v) Exemple int s, u, v; s = u + v; ovf = (u<0 == v<0) && (u<0 != s<0); Un overflow survient (ovf == 1) quand: u, v < 0, s  0 (NegOver) u, v  0, s < 0 (PosOver) ovf = (u>0 && v>0 && s<0) || (u<0 && v<0 && s>=0) sif-1053

84 La multiplication 28/08/2018 Comme dans le cas de l'addition et de la soustraction, les multiplications décimale et binaire sont très semblables. Chacune est une manière rapide d'ajouter à lui-même un grand nombre de fois, le même nombre. Multiplier 7 par 5 est, par exemple, une façon rapide d'ajouter 7 à lui-même 5 fois. 17 Multiplicande x 12 Multiplicateur 34 1er produit partiel 17 2e produit partiel 1 Retenue 204 Produit total sif-1053

85 00010001 Multiplicande +1710 00001100 Multiplicateur +1210
28/08/2018 Multiplicande +1710 Multiplicateur +1210 er produit partiel e produit partiel e produit partiel e produit partiel e produit partiel e produit partiel e produit partiel e produit partiel Produit sif-1053

86 28/08/2018 La somme de tous les produits partiels représente un produit final (le total). Ces additions n'ont cependant généré aucune retenue, comme cela aurait pu se produire, pourquoi? Tout simplement parce que nous avons prévu cette possibilité. En fait, les multiplications ne génèrent jamais de retenu. Lorsque nous multiplions deux nombres de n bits, le résultat est toujours compris dans 2n bits. Donc, le résultat doit toujours être exprimé avec 2n bits. sif-1053

87 Multiplication de valeurs unsigned en C
28/08/2018 u • • • * v • • • u · v • • • • • • UMultw(u , v) • • • Fonction de multiplication standard Ignore les w bits de poids forts Implémentation de l’arithmétique modulo UMultw(u , v) = u · v mod 2w sif-1053

88 Multiplication Unsigned vs. Signed
28/08/2018 Multiplication Unsigned unsigned ux = (unsigned) x; unsigned uy = (unsigned) y; unsigned up = ux * uy Troncature du produit à w-bit up = UMultw(ux, uy) Arithmetique modulo up = ux  uy mod 2w Multiplication complément 2 int x, y; int p = x * y; Calcul du produit exacte de deux nombres de w-bit x, y Troncature du produit à w-bit p = TMultw(ux, uy) Relation up == (unsigned) p sif-1053

89 Multiplication par des puissances de 2
28/08/2018 Opération de décalage u << k => u * 2k Pour les unsigned et signed Exemples u << 3 == u * 8 u << 5 - u << 3 == u * 24 La plupart des machines décalent et additionnent plus vite Compilateur génère automatiquement ce code k u • • • * 2k ••• 1 ••• u · 2k • • • ••• Éliminer k bits UMultw(u , 2k) ••• ••• TMultw(u , 2k) sif-1053

90 La division 28/08/2018 La division est l'opération inverse de la multiplication en ce sens que nous soustrayons de façon répétitive un nombre d'un autre jusqu'à ce que cela ne soit plus possible. Le nombre de fois que nous pouvons soustraire le premier nombre (dividende) nous indique le nombre de fois que le second nombre (diviseur) peut être divisé par le premier. sif-1053

91 Division par des puissances de 2 de nombres Unsigned
28/08/2018 Résultat est un Quotient u >> k =>  u / 2k  k u Point binaire ••• ••• / 2k ••• 1 ••• u / 2k . ••• ••• ••• u / 2k ••• ••• sif-1053

92 Division par des puissances de 2 de nombres complément 2
28/08/2018 Résultat est un Quotient u >> k =>  u / 2k  1 ••• u 2k / u / 2k k RoundDown(u / 2k) . Binary Point sif-1053

93 La conclusion 28/08/2018 La notation du complément à 2 permet de transformer une soustraction binaire en addition binaire. Une multiplication binaire correspond à une suite d ’additions binaires. Une division binaire n ’est qu ’une suite de soustractions binaires. Mais comme la soustraction n ’est qu ’une addition. Un ordinateur ne sait et ne peut qu ’additionner!!! sif-1053


Télécharger ppt "Cours 2 2. Représentation et traitement des informations Le matériel"

Présentations similaires


Annonces Google