Aller au contenu

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¹⁰
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

  1. 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.
  2. 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.
  3. 2² = 4 <= 5. On écrit un 1 en position 2. Reste : 5 - 4 = 1.
  4. 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

  1. On regroupe par 4 en partant de la droite : 1011 | 0111
  2. On convertit chaque groupe : 1011 = B, 0111 = 7
  3. Résultat : \((10110111)_2\) = \((B7)_{16}\)

Exemple : convertir \((3D)_{16}\) en binaire

  1. On remplace chaque chiffre par ses 4 bits : 3 = 0011, D = 1101
  2. 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

>>> bin(45)
'0b101101'

>>> hex(750)
'0x2ee'

>>> hex(255)
'0xff'

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 :

>>> int('101101', 2)
45

>>> int('2F', 16)
47

>>> int('1A3', 16)
419

6.3 Écriture directe en binaire et hexadécimal

On peut écrire directement des nombres en base 2 ou 16 dans le code Python :

>>> 0b101101
45

>>> 0x2F
47

>>> 0b11111111
255

>>> 0xFF
255

6.4 Nombre de bits nécessaires

>>> (45).bit_length()
6

>>> (255).bit_length()
8

>>> (256).bit_length()
9

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