Combien de bits faut-il pour écrire un nombre entier, et pourquoi le logarithme répond-il à la question ?
Un entier n ≥ 1 s'écrit en binaire avec ⌊log₂ n⌋ + 1 chiffres : 1 000 demande 10 bits, un million 20 bits. Doubler un nombre ne coûte qu'un bit de plus, ce qui explique pourquoi l'informatique manipule sans peine des nombres immenses.
Grand oral session 2027 : exposé de 10 minutes debout, puis 10 minutes d'échange, sans calculatrice. Plan prévu pour 9,5 min.
Pourquoi cette question : un modèle d'introduction
Le jury attend que vous expliquiez pourquoi vous avez choisi la question. Inspirez-vous de ce modèle, mais racontez votre propre parcours.
En NSI, nous avons converti des nombres en binaire à la main, et j'ai remarqué que 1 000 et 1 023 prenaient le même nombre de chiffres, alors que 1 024 en demandait un de plus. J'ai voulu comprendre la règle cachée derrière ce saut. Elle relie l'écriture d'un nombre au logarithme, une fonction que j'ai découverte en terminale et qui sert justement à compter les « étages » d'une croissance exponentielle.
L'enjeu et les notions du programme
Relier l'écriture positionnelle en base 2 aux puissances de 2 et au logarithme, et en tirer la taille mémoire d'un nombre.
Mathématiques
- Puissances, encadrement d'un entier entre deux puissances (seconde)
- Fonction logarithme népérien, log₂ x = ln x / ln 2 (terminale)
- Partie entière, inéquations avec ln (terminale)
Numérique et sciences informatiques
- Écriture d'un entier positif dans une base b ≥ 2 (première)
- Bits, octets, taille des entiers en mémoire (première)
Le plan de l'exposé en 9,5 min
1. Introduction
1 minUn ordinateur ne stocke que des 0 et des 1. Pour réserver la place d'un nombre, il faut savoir combien de chiffres binaires, ou bits, il occupe. Problématique : comment calculer ce nombre de bits sans écrire la conversion, et que nous apprend la réponse ?
2. Mathématiques : encadrer par des puissances de 2
4 minAvec k bits, on écrit tous les entiers de 0 à 2^(k)-1, car 1+2+4+…+2^(k-1)=2^(k)-1 (somme géométrique). Un entier n≥1 s'écrit donc avec exactement k bits si et seulement si 2^(k-1)≤ n<2^(k).
On passe au logarithme, fonction croissante : k-1≤log₂ n<k, avec log₂ n=(ln n)/(ln 2). Le nombre de bits est donc k=lfloorlog₂ nrfloor+1.
Exemples : 2⁹=512≤1000<1024=2¹⁰, donc 1 000 s'écrit sur 10 bits (1111101000). Un million : log₂ 10⁶=6log₂ 10≈19,9, donc 20 bits. Le saut entre 1 023 et 1 024 s'explique : 1 024 est la première puissance de 2 qui demande un chiffre de plus, comme 1 000 en base 10.
3. NSI : ce que cela change en machine
3 minLes machines réservent des tailles fixes : 8, 16, 32 ou 64 bits. Avec 32 bits, on va jusqu'à 2³²-1≈4,3 milliards ; avec 64 bits, jusqu'à environ 1,8×10¹⁹. Comme le nombre de bits croît comme un logarithme, multiplier la valeur maximale par 1 000 ne coûte qu'une dizaine de bits (2¹⁰=1024).
Python, lui, ne limite pas la taille des entiers : il ajoute des blocs de mémoire au besoin. La fonction bit\_length() renvoie exactement lfloorlog₂ nrfloor+1. On retrouve la même idée dans la recherche dichotomique : diviser par 2 jusqu'à 1 prend environ log₂ n étapes, autant que de bits.
4. Conclusion
1,5 minLe nombre de bits d'un entier est lfloorlog₂ nrfloor+1 : il ne croît qu'avec le logarithme de la valeur. C'est pour cela qu'une poignée de bits supplémentaires suffit à représenter des nombres gigantesques. J'ouvre sur la représentation des entiers négatifs, qui demande une autre astuce : le complément à deux.
Ce que j'écris au tableau
Pas de calculatrice ni de support numérique : un calcul clé écrit au tableau rend l'exposé concret et montre la solidité des connaissances.
512≤1000<1024 ⇒ 10 bits log₂ 10⁶≈19,9 ⇒ 20 bits
Conclusion : la réponse à la question
Le logarithme en base 2 compte combien de fois on peut diviser par 2 : c'est exactement le nombre de chiffres binaires. Doubler un nombre ne coûte qu'un bit, ce qui rend l'écriture binaire très économe.
Les questions probables du jury
Pendant les 10 minutesd'échange, le jury vous fait préciser et approfondir, sur tout le programme de vos spécialités en lien avec la question.
Pourquoi 2⁰ + 2¹ + … + 2^(k−1) = 2^k − 1 ?
C'est la somme des termes d'une suite géométrique de raison 2 : (2^(k)-1)/(2-1). En binaire, c'est le nombre 11…1 à k chiffres, auquel on ajoute 1 pour obtenir 100…0=2^(k).
Combien de chiffres a 1 000 en base 10, et quelle formule l'explique ?
lfloorlog₁₀1000rfloor+1=3+1=4. La même formule vaut en toute base b.
Combien de bits pour écrire 2^100 ?
log₂ 2¹⁰⁰=100, donc 101 bits : un 1 suivi de cent 0.
Comment convertit-on un entier en binaire ?
Par divisions euclidiennes successives par 2 : les restes, lus du dernier au premier, donnent les chiffres.
Combien d'octets pour un nombre de 20 bits ?
Un octet contient 8 bits : il faut 3 octets (24 bits), car 2 octets ne donnent que 16 bits.
Les pièges qui coûtent des points
- Oublier le « + 1 » : log₂ 1 024 = 10, mais 1 024 s'écrit sur 11 bits.
- Confondre log₂ et ln : il faut diviser par ln 2.
- Dire que le nombre de bits est proportionnel à la valeur : il croît comme son logarithme.
Revoir les notions
Autres questions : représenter l'information
- Comment un ordinateur représente-t-il les nombres négatifs, et pourquoi 127 + 1 peut-il donner −128 ?
- Pourquoi un ordinateur ne peut-il pas représenter tous les nombres réels, et où ses erreurs sont-elles les plus grandes ?
- Combien de couleurs un écran peut-il afficher, et combien pèse une image non compressée ?
- Pourquoi les informaticiens écrivent-ils en base 16 plutôt qu'en base 10 ?
Préparer l'oral, pas seulement le contenu
Gestion des 20 minutes de préparation, usage du tableau, posture debout, réponses au jury : la méthode complète, conforme aux règles de la session 2027.
Méthode : traiter une question de Grand oral →