Outils Maths Discrètes CM n o 3 Damien Bouloc Bureau 106 Bâtiment 1R2 05.61.55.82.32 damien.bouloc@math.univ-toulouse.fr 28 septembre 2017
Existence et unicité de l écriture en base b (b 2) Rappel du théorème Théorème 1.2.3 Soit a N. Il existe un unique k 0 et une unique suite finie (c 0, c 1,..., c k ) tels que : a = c k.b k + c k 1.b k 1 + + c 1.b 1 + c 0.b 0 et { 0 i k, 0 c i < b, c k 0. (c k c 1 c 0 ) b est l écriture en base b du nombre a c 0, c 1,..., c k sont les chiffres de cette écriture
Existence et unicité de l écriture en base b (b 2) Démonstration de l unicité On raisonne par récurrence forte Principe : Soit P(n) une propriété dépendant d un entier n. Pour montrer que P(n) est vraie pour tout n 1 : Initialisation : on montre que P(n) est vraie lorsque n = 1. Hérédité : on fixe un entier N > 1 quelconque on suppose que P(n) est vraie pour tout entier n tel que 1 n < N on démontre qu alors P(N) est vraie
Existence et unicité de l écriture en base b (b 2) Démonstration de l unicité Ici, on considère la propriété P(a) : «Si a = c k b k + c k 1 b k 1 + + c 1 b 1 + c 0 b 0 avec { 0 i k, 0 c i < b, ( ) c k 0, alors k et (c 0, c 1,..., c k ) sont uniques.»
Existence et unicité de l écriture en base b (b 2) Démonstration de l unicité «Si a = c k b k + c k 1 b k 1 + + c 1 b 1 + c 0 b 0 avec { 0 i k, 0 ci < b, ( ) c k 0, alors k et (c 0, c 1,..., c k ) sont uniques.» Initialisation : Soit a = 1. Supposons que 1 = c k b k + + c 1 b + c 0 avec (c 0,..., c k ) vérifiant ( ). D après le lemme 1.2.1, on a : b k 1 b k+1 1 d où obligatoirement k = 0, et donc 1 = c 0.
Existence et unicité de l écriture en base b (b 2) Démonstration de l unicité Hérédité : Soit A > 1. Supposons que P(a) est vraie pour tout 1 a < A. Montrons que P(A) est vraie : supposons que A = c k b k + + c 1 b + c 0 avec (c 0,..., c k ) vérifiant ( ). Alors on a : A = b (c k b k 1 + + c 1 b }{{} 0 ) + c 0 a Il n y a plus qu à : 1. remarquer que (a, c 0 ) = DivEucl(A, b) 2. appliquer l hypothèse de récurrence à a (s il est non-nul!)
Existence et unicité de l écriture en base b (b 2) L astuce de la division euclidienne L astuce utilisée dans la partie "Hérédité" précédente peut servir en pratique à convertir totalement un nombre en base b Exemple : conversion de a = 31 dans la base b = 3 31 = (1011) 3 31 = 3 10 + 1 10 = 3 3 + 1 3 = 3 1 + 0 1 = 3 0 + 1
Existence et unicité de l écriture en base b (b 2) L astuce de la division euclidienne Autrement dit, pour trouver l écriture (c k... c 1 c 0 ) b d un nombre a en base b : 1. On pose x 0 := a 2. On calcule (q 0, r 0 ) := DivEucl(x 0, b) 3. On sait qu alors c 0 = r 0 4. On pose x 1 := q 0 5. On calcule (q 1, r 1 ) := DivEucl(x 1, b) 6. On sait qu alors c 1 = r 1 7. On pose x 2 := q 1...
Existence et unicité de l écriture en base b (b 2) Démonstration de l existence On écrit formellement l algorithme précédent : x := a i := 0 tant que (x b) faire (q, r) := DivEucl(x, b) c[i] := r x := q i := i + 1 Question fin tant que c[i] := x Que fait l algorithme pour a = 5 et b = 1? k := i 1. il divise par zéro à un moment rendre (k, c) 2. il ne s arrête jamais 3. il renvoie (1, [10]) 4. il renvoie (5, [0,0,0,0,0])
Existence et unicité de l écriture en base b (b 2) Démonstration de l existence Terminaison : Il faut vérifier que x décroit strictement à chaque tour de boucle. Pourquoi est-ce que si (q, r) = DivEucl(x, b), alors q < x? Correction : On pose x 0 := a, et (x i+1, c i ) = DivEucl(x i, b). Montrer que est un invariant de boucle. c 0 b 0 + + c i 1 b i 1 + x i b i
Nombre de chiffres dans l écriture d un nombre en base b
Nombre de chiffres en base b Logarithme en base b Définition Le logarithme en base b est la fonction log b : R + R définie par log b (x) = ln(x) ln(b) Quelques propriétés pratiques : ln(1) = 0 log b (1) = 0 ln(e) = 1 log b (b) = 1 ln(xy) = ln(x) + ln(y) ln(e n ) = n log b (xy) = log b (x) + log b (y) log b (b n ) = n
Nombre de chiffres en base b Logarithme en base b Question Sans calculatrice, que peut-on dire de x = log 10 (321)? 1. 2 < x < 3 2. 3 < x < 4 3. 100 < x < 1000 4. Aucune des réponses ci-dessus
Nombre de chiffres en base b Logarithme en base b La fonction log b est strictement croissante. En particulier, si b k a < b k+1, alors k log b (a) < k + 1 Proposition 1.2.6 Si a = (c k... c 1 c 0 ) b, alors k = log b (a) Autrement dit, le nombre de chiffres dans l écriture de a en base b est égal à log b (a) + 1
Nombre de chiffres en base b Logarithme en base b Définition Soit a N. On appelle taille de a écrit en base b le nombre a b := log b (a) + 1 (c-à-d le nombre de chiffres dans l écriture de a en base b) Attention : quand il n y aura pas d ambiguïté sur la base b utilisée, a b pourra être noté a, à ne pas confondre avec la valeur absolue.
Nombre de chiffres en base b Coup du codage d un nombre entier Quelques approximations : on suppose que l espace mémoire occupé par le nombre n est rien d autre que l espace en mémoire occupé par tous ses chiffres, on suppose que chaque chiffre occupe le même espace en mémoire (disons K bits). Dans ce cas, si le nombre a est codé en base b, alors il occupe en mémoire K a b bits. coût en mémoire proportionnel à a b
Nombre de chiffres en base b Entre base 2 et base 10 Remarque On a Ainsi 2 10 = 1024 10 3 d où 10 ln(2) 3 ln(10) a 2 log 2 (a) = ln(10) ln(2) log 10(a) 10 3 a 10 Par exemple : a = 684654516 s écrit avec 9 chiffres en base 10 10 3 9 = 30 = a s écrit avec environ 30 chiffres en binaire.
Un peu de culture
Un peu de culture Octets et ASCII Octet = paquet de 8 bits Permet donc de stocker un entier entre 0 et 2 8 1 = 255 ASCII = American Standard Code for Information Interchange Fait correspondre un caractère à chaque entier de 0 à 127
Un peu de culture Entiers 32 bits et 64 bits Certains langages de programmation codent les entiers sur un nombre fixe de bits, en général 32 ou 64. Pour coder un entier relatif, on peut «sacrifier» un bit pour préciser le signe, puis utiliser les bits restants pour coder la valeur absolue de cet entier Taille Entier «non-signé» Entier «signé» 32 bits 0 à 2 32 1 4 10 9 ±(2 31 1) 2 10 9 64 bits 0 à 2 64 1 1.8 10 19 ±(2 63 1) 10 18
Un peu de culture Préfixes de taille en informatique Attention : en informatique, 1 kilo-octet = 1024 octets Préfixe Facteur Approx Ordre de grandeur kilo 2 10 10 3 Un petit mail de texte méga 2 20 10 6 Une photo de résolution moyenne giga 2 30 10 9 La mémoire d un smartphone tera 2 40 10 12 Un disque dur récent peta 2 50 10 15 L ensemble des livres de toutes les bibliothèques de France exa 2 60 10 18 La capacité de stockage d information de l ensemble de l humanité au milieu des années 1980
Un peu de culture Adresses mémoire Il est parfois utile de localiser où une variable est stockée dans la mémoire. Dans une mémoire de 4 Go (= 2 32 octets), on peut numéroter chaque octet de 0 à 2 32 1 : ce nombre permet d identifier un octet dans la mémoire, on l appelle adresse mémoire. Dans ce cas, le stockage d une adresse mémoire nécessite 32 bits (c-à-d 8 octets).
Un peu de culture Codage hexadécimal Pour le codage hexadécimal (c-à-d en base 16), les «chiffres» de 10 à 15 sont traditionnellement notés A, B, C,..., F. Par exemple : (A8D) 16 = }{{} 10 16 2 + 8 16 1 + }{{} 13 16 0 "A" "D" Comme 16 = 2 4, chaque chiffre en hexadécimal correspond à un nombre de (au plus) 4 bits
Un peu de culture Codage hexadécimal (0) 16 (0000) 2 (4) 16 (0100) 2 (8) 16 (1000) 2 (C) 16 (1100) 2 (1) 16 (0001) 2 (5) 16 (0101) 2 (9) 16 (1001) 2 (D) 16 (1101) 2 (2) 16 (0010) 2 (6) 16 (0110) 2 (A) 16 (1010) 2 (E) 16 (1110) 2 (3) 16 (0011) 2 (7) 16 (0111) 2 (B) 16 (1011) 2 (F ) 16 (1111) 2
Prochain amphi Jeudi 5 octobre, 7h45 Travaux dirigés Début des TD la semaine prochaine Imprimez et préparez vos TD