Chapitre 1 : Entiers positifs et bases de numération¶
Programme officiel (B.O.)¶
B.O. spécial n° 1 du 22 janvier 2019 - NSI Première
| Contenus | Capacités attendues | Commentaires |
|---|---|---|
| Écriture d'un entier positif dans une base b >= 2 | Passer de la représentation d'une base dans une autre. | Les bases 2, 10 et 16 sont privilégiées. |
1. Introduction : pourquoi d'autres bases ?¶
Au quotidien, nous comptons en base 10 (système décimal). Nous utilisons 10 chiffres : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Ce choix est lié à nos 10 doigts, mais il n'a rien d'universel.
Les ordinateurs, eux, ne connaissent que deux états électriques : tension haute ou tension basse. Ils travaillent donc en base 2 (système binaire), avec seulement deux chiffres : 0 et 1.
Pour des raisons de lisibilité, les informaticiens utilisent aussi la base 16 (système hexadécimal), qui est un raccourci pratique pour écrire des nombres binaires.
À retenir
Un ordinateur stocke et manipule toutes ses données sous forme de 0 et de 1. Comprendre les bases de numération est indispensable pour comprendre comment les données sont représentées en machine.
2. Le système décimal (base 10)¶
2.1 Principe de la numération positionnelle¶
Dans le système décimal, la position d'un chiffre détermine sa valeur. Prenons le nombre 5 307 :
| Milliers | Centaines | Dizaines | Unités |
|---|---|---|---|
| 5 | 3 | 0 | 7 |
| 5 × 10³ | 3 × 10² | 0 × 10¹ | 7 × 10⁰ |
| 5 000 | 300 | 0 | 7 |
On a donc : 5 307 = 5 × 10³ + 3 × 10² + 0 × 10¹ + 7 × 10⁰
Chaque position correspond à une puissance de 10. C'est ce qu'on appelle la décomposition en puissances de la base.
2.2 Généralisation à une base quelconque¶
Ce principe fonctionne dans n'importe quelle base b >= 2. Un nombre écrit en base b utilise les chiffres de 0 à b - 1, et chaque position correspond à une puissance de b.
Notation
Pour éviter toute confusion, on note la base en indice. Par exemple :
- \((1101)_2\) signifie « 1101 en base 2 » ;
- \((5307)_{10}\) signifie « 5307 en base 10 » ;
- \((2F)_{16}\) signifie « 2F en base 16 ».
3. Le système binaire (base 2)¶
3.1 Les chiffres binaires : les bits¶
En base 2, on n'utilise que deux chiffres : 0 et 1. Chaque chiffre binaire s'appelle un bit (contraction de l'anglais binary digit).
Un groupe de 8 bits forme un octet (en anglais byte).
| Terme | Définition |
|---|---|
| Bit | Plus petite unité d'information. Vaut 0 ou 1. |
| Octet | Groupe de 8 bits. Peut représenter 2⁸ = 256 valeurs différentes (de 0 à 255). |
3.2 Décomposition en puissances de 2¶
La lecture d'un nombre binaire suit le même principe que le décimal, mais avec des puissances de 2.
Exemple : convertir \((1101)_2\) en décimal
On numérote les positions de droite à gauche, en commençant à 0 :
| Position | 3 | 2 | 1 | 0 |
|---|---|---|---|---|
| Bit | 1 | 1 | 0 | 1 |
| Puissance | 2³ = 8 | 2² = 4 | 2¹ = 2 | 2⁰ = 1 |
| Valeur | 1 × 8 = 8 | 1 × 4 = 4 | 0 × 2 = 0 | 1 × 1 = 1 |
\((1101)_2\) = 8 + 4 + 0 + 1 = 13 en décimal.
3.3 Les puissances de 2 à connaître¶
Il est utile de mémoriser les premières puissances de 2 :
| 2⁰ | 2¹ | 2² | 2³ | 2⁴ | 2⁵ | 2⁶ | 2⁷ | 2⁸ | 2⁹ | 2¹⁰ |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 2 | 4 | 8 | 16 | 32 | 64 | 128 | 256 | 512 | 1 024 |
À retenir
- Avec n bits, on peut représenter 2ⁿ valeurs différentes, soit les entiers de 0 à 2ⁿ - 1.
- Avec 8 bits (1 octet) : 256 valeurs, de 0 à 255.
- Avec 16 bits : 65 536 valeurs, de 0 à 65 535.
3.4 Conversion décimal vers binaire : méthode des divisions successives¶
Pour convertir un entier décimal en binaire, on effectue des divisions euclidiennes successives par 2 et on lit les restes de bas en haut.
Exemple : convertir 45 en binaire
| Division | Quotient | Reste |
|---|---|---|
| 45 ÷ 2 | 22 | 1 |
| 22 ÷ 2 | 11 | 0 |
| 11 ÷ 2 | 5 | 1 |
| 5 ÷ 2 | 2 | 1 |
| 2 ÷ 2 | 1 | 0 |
| 1 ÷ 2 | 0 | 1 |
On lit les restes de bas en haut : \((45)_{10}\) = \((101101)_2\)
Vérification : 1×32 + 0×16 + 1×8 + 1×4 + 0×2 + 1×1 = 32 + 8 + 4 + 1 = 45 ✓
3.5 Méthode alternative : soustraction de puissances de 2¶
On peut aussi procéder par soustractions successives de la plus grande puissance de 2 possible :
Exemple : convertir 45 en binaire par soustraction
- La plus grande puissance de 2 inférieure ou égale à 45 est 2⁵ = 32. On écrit un 1 en position 5. Reste : 45 - 32 = 13.
- La plus grande puissance de 2 inférieure ou égale à 13 est 2³ = 8. On écrit un 1 en position 3 (et un 0 en position 4). Reste : 13 - 8 = 5.
- 2² = 4 <= 5. On écrit un 1 en position 2. Reste : 5 - 4 = 1.
- 2⁰ = 1 <= 1. On écrit un 1 en position 0 (et un 0 en position 1). Reste : 0.
Résultat : \((101101)_2\) ✓
4. Le système hexadécimal (base 16)¶
4.1 Les 16 chiffres hexadécimaux¶
En base 16, il faut 16 symboles. Comme nous n'avons que 10 chiffres (0 à 9), on ajoute les six premières lettres de l'alphabet :
| Hexadécimal | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Décimal | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
Notation courante
En informatique, les nombres hexadécimaux sont souvent précédés de 0x. Par exemple, 0x2F signifie \((2F)_{16}\).
4.2 Conversion hexadécimal vers décimal¶
Même principe que pour le binaire, avec des puissances de 16 :
Exemple : convertir \((2F)_{16}\) en décimal
| Position | 1 | 0 |
|---|---|---|
| Chiffre | 2 | F (= 15) |
| Puissance | 16¹ = 16 | 16⁰ = 1 |
| Valeur | 2 × 16 = 32 | 15 × 1 = 15 |
\((2F)_{16}\) = 32 + 15 = 47 en décimal.
Exemple : convertir \((1A3)_{16}\) en décimal
\((1A3)_{16}\) = 1 × 16² + 10 × 16¹ + 3 × 16⁰ = 256 + 160 + 3 = 419 en décimal.
4.3 Conversion décimal vers hexadécimal¶
On applique la méthode des divisions successives par 16 :
Exemple : convertir 750 en hexadécimal
| Division | Quotient | Reste | Chiffre hexa |
|---|---|---|---|
| 750 ÷ 16 | 46 | 14 | E |
| 46 ÷ 16 | 2 | 14 | E |
| 2 ÷ 16 | 0 | 2 | 2 |
On lit de bas en haut : \((750)_{10}\) = \((2EE)_{16}\)
Vérification : 2 × 256 + 14 × 16 + 14 × 1 = 512 + 224 + 14 = 750 ✓
4.4 Conversion binaire vers hexadécimal (et inversement)¶
La base 16 est une puissance de 2 (16 = 2⁴), ce qui crée une correspondance directe : chaque chiffre hexadécimal correspond exactement à un groupe de 4 bits.
À retenir
Pour convertir du binaire vers l'hexadécimal, il suffit de regrouper les bits par paquets de 4 (en partant de la droite) et de remplacer chaque groupe par le chiffre hexadécimal correspondant. Pour l'opération inverse, on remplace chaque chiffre hexadécimal par ses 4 bits.
Table de correspondance :
| Hexa | Binaire | Hexa | Binaire | |
|---|---|---|---|---|
| 0 | 0000 | 8 | 1000 | |
| 1 | 0001 | 9 | 1001 | |
| 2 | 0010 | A | 1010 | |
| 3 | 0011 | B | 1011 | |
| 4 | 0100 | C | 1100 | |
| 5 | 0101 | D | 1101 | |
| 6 | 0110 | E | 1110 | |
| 7 | 0111 | F | 1111 |
Exemple : convertir \((10110111)_2\) en hexadécimal
- On regroupe par 4 en partant de la droite :
1011 | 0111 - On convertit chaque groupe :
1011= B,0111= 7 - Résultat : \((10110111)_2\) = \((B7)_{16}\)
Exemple : convertir \((3D)_{16}\) en binaire
- On remplace chaque chiffre par ses 4 bits : 3 =
0011, D =1101 - Résultat : \((3D)_{16}\) = \((00111101)_2\)
C'est pour cette raison que l'hexadécimal est si utilisé en informatique : il offre une notation compacte du binaire tout en restant facile à convertir.
5. Nombre de bits nécessaires¶
Pour représenter un entier positif N en binaire, combien de bits sont nécessaires ?
La réponse est liée à la plus grande puissance de 2 inférieure ou égale à N :
Formule
Le nombre de bits nécessaires pour écrire un entier positif N >= 1 en binaire est :
n = partie entière de log₂(N) + 1
En pratique : il faut n bits pour écrire les entiers de 0 à 2ⁿ - 1.
| Nombre de bits | Valeur maximale | Nombre de valeurs |
|---|---|---|
| 1 | 1 | 2 |
| 4 | 15 | 16 |
| 8 (1 octet) | 255 | 256 |
| 16 | 65 535 | 65 536 |
| 32 | 4 294 967 295 | environ 4,3 milliards |
| 64 | environ 1,8 × 10¹⁸ | environ 1,8 × 10¹⁹ |
Exemple
- Pour écrire 100 en binaire, il faut 7 bits (car 2⁶ = 64 < 100 <= 127 = 2⁷ - 1).
- Pour écrire 255 en binaire, il faut 8 bits (car 255 = 2⁸ - 1 = \((11111111)_2\)).
- Pour écrire 256 en binaire, il faut 9 bits (car 256 = 2⁸ = \((100000000)_2\)).
6. En Python¶
Python offre des fonctions intégrées pour travailler avec les bases :
6.1 Conversion décimal vers binaire et hexadécimal¶
Les préfixes 0b et 0x indiquent respectivement la base 2 et la base 16.
6.2 Conversion vers le décimal¶
La fonction int() avec un second argument permet de convertir depuis n'importe quelle base :
6.3 Écriture directe en binaire et hexadécimal¶
On peut écrire directement des nombres en base 2 ou 16 dans le code Python :
6.4 Nombre de bits nécessaires¶
7. Résumé¶
| Concept | Base 10 | Base 2 | Base 16 |
|---|---|---|---|
| Nom | Décimal | Binaire | Hexadécimal |
| Chiffres utilisés | 0 à 9 | 0 et 1 | 0 à 9 et A à F |
| Préfixe Python | (aucun) | 0b |
0x |
| Fonction Python | int() |
bin() |
hex() |
| Usage principal | Vie courante | Stockage machine | Notation compacte |
| Conversion | Méthode |
|---|---|
| Base b vers base 10 | Décomposition en puissances de b |
| Base 10 vers base b | Divisions successives par b (lire les restes de bas en haut) |
| Base 2 vers base 16 | Regrouper les bits par paquets de 4 |
| Base 16 vers base 2 | Remplacer chaque chiffre hexa par ses 4 bits |