1 / 18

MATHÉMATIQUES DISCRÈTES Chapitre 2 (section 4)

MATHÉMATIQUES DISCRÈTES Chapitre 2 (section 4). François Meunier DMI. Entiers et Algorithmes. Sujets: Algorithme d’Euclide pour trouver le PGCD. Représentations des entiers en base b . Binaire, hexadécimal, octal. Représentation complément-2 des nombres binaires négatifs.

yoshi
Download Presentation

MATHÉMATIQUES DISCRÈTES Chapitre 2 (section 4)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. MATHÉMATIQUES DISCRÈTESChapitre 2 (section 4) François Meunier DMI

  2. Entiers et Algorithmes • Sujets: • Algorithme d’Euclide pour trouver le PGCD. • Représentations des entiers en base b. • Binaire, hexadécimal, octal. • Représentation complément-2 des nombres binaires négatifs. • Algorithmes de l’arithmétique des ordinateurs: • Addition, multiplication et division binaire.

  3. Algorithme d’Euclide pour trouver le PGCD • Trouver le pgcd de deux nombres en comparant les facteurs premiers peut être difficile si ces facteurs premiers sont inconnus. • Euclide a démontré quepour toutes paires d’entiers a, b,pgcd(a, b) = pgcd((a mod b), b). • Pour une paire ordonnée a,b telle que a>b, en supposant que b>1alors (a mod b) < a. • Ceci facilite la recherche du pgcd.

  4. Exemples • pgcd(372,164) = pgcd(372 mod 164, 164). • 372 mod 164 = 372164372/164 = 372164·2 = 372328 = 44. • pgcd(164,44) = pgcd(164 mod 44, 44). • 164 mod 44 = 16444164/44 = 16444·3 = 164132 = 32. • pgcd(44,32) = pgcd(44 mod 32, 32) = pgcd(12, 32) = pgcd(32 mod 12, 12) = pgcd(8,12) = pgcd(12 mod 8, 8) = pgcd(4,8) = pgcd(8 mod 4, 4) = pgcd(0,4) = 4.

  5. Algorithme d’Euclide (exemple) pgcd(33,77):

  6. Algorithme d’Euclide (exemple) pgcd(244,117): Par définition  244 et 117 sont premiers relatifs.

  7. Algorithme d’Euclide procédure pgcd(a, b: entiers positifs ) tant queb  0 faire r≔amodb; a≔b; b≔r; Fin retourner a // dernier reste non nul

  8. Systèmes de numération Base-b • La représentation de nombres en base-10, utilise les symboles 0-9. • Mais il n’existe pas seulement la base-10 Toute base b>1 peut être utilisée. • Pour n’importe quels entiers positifs n,b, il existe une séquence de chiffres ak ak-1… a1a0tels queai<b et donnant: Expension en base-b de n

  9. Bases importantes Utiliser seulement parce que nous avons 10 doigts • Base b=10 (décimal):10 symboles: 0,1,2,3,4,5,6,7,8,9. • Base b=2 (binaire):2 symboles: 0,1. (“Bits”=“binary digits.”) • Base b=8 (octal):8 symboles: 0,1,2,3,4,5,6,7. • Base b=16 (hexadécimal):16 symboles: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F Représentation interne des données dans un ordinateur Chaque chiffre octal correspond à 3 bits Chiffre HEX correspond à 4 bits 10, 11, 12, 13, 14, 15

  10. Convertion dans la Base b Algorithme informel: • Pour convertir un nombre n dans une base b>1: • La valeur du chiffre le moins significatif, calculée par n mod b. • Remplacer n par le quotient n/b. • Répéter les 2 étapes précédentes pour trouver les autres chiffres, TTQ n != 0.

  11. Addition des entiers base-b • Les nombres sont additionnés à partir du chiffre le moins significatif vers le plus significatif en faisant suivre les retenus: base-10 base-16 retenu: x + y

  12. Addition des entiers base-b procédureaddition(an−1…a0, bn−1…b0: entiers positifs dans une base basea,b) c := 0 pour j := 0 à n−1 {pour chaque chiffre} Sum := aj+bj+c {somme de 2-chiffres} sj:= Summodbase{chiffre bas de la somme } c := Sum / base {chiffre haut de la somme} fin sn := c retournersn…s0: entier s en base base

  13. Addition des entiers binaires procédureaddition(an−1…a0, bn−1…b0: représentations binaires des entiers positifs a,b) c := 0 pour j := 0 à n−1 {pour chaque bit} bitSum := aj+bj+c {somme de 2-bits} sj:= bitSummod 2 {bit bas de la somme } c := bitSum / 2 {bit haut de la somme} fin sn := c retournersn…s0: entier s en binaire

  14. Multiplication des entiers binaires (+) • La multiplication est simplifiée en binaire puisqu’une X par 2k correspond à faire un décalage à gauche de k-positions (<<k), et X par 0·2k ou 1·2k.

  15. Multiplication des entiers binaires (+) procédure multiplication( xk xk-1…x1x0, yk yk-1…y1y0: entiers binaires positifs) x:=xk xk-1…x1x0 p := 0// produit partiel pouri := 0 àk-1 faire siyi == 1 alors p = addition(p , x << i ) retournerp multiplicande multiplicateur

  16. Complément-2 • Élimine le problème de double représentation du 0 • Addition de termes signés est facile • Permet d’utiliser que des opérations d’addition • Représentation de nombres dans l’intervalle -2(k-1)x < 2(k-1) • Ex: Java: byte [-128 to +127]

  17. Complément-2 • Représentation des négatifs: • Calculer du complément 1 • Additionner 1 • Équivalent: -x = ¬x + 1. 00010010 représente 18 11101101 + 1 = 11101110 représente -18 • Quel est l’intervalle des valeurs entières signées de type int en Java, C ou C++? • Int: 32-bits: • Plus grand int=011111….1 = 231-1 = 2,147,483,647 • Plus petit int =100000….0 = -231 = -2,147,483,648

  18. Addition Complément-2 • Addition comme celle décrite précédemment 11101110 = (-18)10, 11110100 = (-12)10 Additionnés ensemble: (11100010) = (-30)10: Le complément-2 de -30 devrait donner 30: (¬11100010+1) = (00011101+1) = 00011110. retenu: x +y

More Related