Télécharger la présentation
Publié parFlorentin Lelievre Modifié depuis plus de 10 années
1
MATHÉMATIQUES DISCRÈTES Chapitre 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é que pour 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>1 alors (a mod b) < a. Ceci facilite la recherche du pgcd.
4
Exemples pgcd(372,164) = pgcd(372 mod 164, 164).
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. Have students come up with other examples and work through them. Maybe start with a 2-digit example.
5
Algorithme d’Euclide (exemple)
pgcd(33,77): Étape r = x mod y x y - 33 77 1 33 mod 77 = 33 2 77 mod 33 = 11 11 3 33 mod 11 = 0
6
Algorithme d’Euclide (exemple)
pgcd(244,117): Par définition 244 et 117 sont premiers relatifs. Étape r = x mod y x y - 244 117 1 244 mod 117 = 10 10 2 117 mod 10 = 7 7 3 10 mod 7 = 3 4 7 mod 3 = 1 5 3 mod 1=0
7
Algorithme d’Euclide procédure pgcd(a, b: entiers positifs )
tant que b 0 faire r ≔ a mod b; 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… a1a0 tels que ai<b et donnant: We’ll deal with summation notation in detail later. For now, explain what it means in this particular case. 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: 1 7 4 6 3 + 2 9 1 A 4 F + C B 9 6 x + y
12
Addition des entiers base-b
procédure addition(an−1…a0, bn−1…b0: entiers positifs dans une base base a,b) c := 0 pour j := 0 à n−1 {pour chaque chiffre} Sum := aj+bj+c {somme de 2-chiffres} sj := Sum mod base {chiffre bas de la somme } c := Sum / base {chiffre haut de la somme} fin sn := c retourner sn…s0: entier s en base base
13
Addition des entiers binaires
procédure addition(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 := bitSum mod 2 {bit bas de la somme } c := bitSum / 2 {bit haut de la somme} fin sn := c retourner sn…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. x 1 y 1·(x<<0) 0·(x<<1) 0·(x<<2) 1·(x<<3) :
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 pour i := 0 à k-1 faire si yi == 1 alors p = addition(p , x << i ) retourner p 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: Équivalent: -x = ¬x + 1.
Calculer du complément 1 Additionner 1 Équivalent: -x = ¬x + 1. représente 18 = 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 = = 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
= (-18)10, = (-12)10 Additionnés ensemble: ( ) = (-30)10: Le complément-2 de -30 devrait donner 30: (¬ ) = ( ) = 1 retenu: x +y
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.