Observation

Soit C un nombre dont la représentation en base 2 comporte 8 bits :
C=(B7B6B5B4B3B2B1B0)2
 =B7 × 27 + B6 × 26 + B5 × 25 + B4 × 24 + B3 × 23 + B2 × 22 + B1 × 21 + B0 × 20
 =(B7 × 23 + B6 × 22 + B5 × 21 + B4 × 20)× 24 + (B3 × 23 + B2 × 22 + B1 × 21 + B0 × 20)× 1
 =(B7 × 23 + B6 × 22 + B5 × 21 + B4 × 20)× 161 + (B3 × 23 + B2 × 22 + B1 × 21 + B0 × 20)× 160
 
 = (
C1
C0
)16
chiffre hexadécimalvaleur binaire
00000
10001
20010
30011
40100
50101
60110
70111
81000
91001
A1010
B1011
C1100
D1101
E1110
F1111
Cette démarche peut être étendue à un nombre quelconque de bits.

Ainsi, pour passer de la représentation binaire d'un nombre à sa représentation hexadécimale, il suffit de remplacer chaque groupe de 4 bits par le chiffre hexadécimal correspondant.

Inversement, pour passer de la représentation hexadécimale à la représentation binaire, il faut convertir chaque chiffre hexadécimal en un quadruplet de bits correspondant à la valeur du chiffre.

De même :

Soit C un nombre dont la représentation en base 2 comporte 6 bits :
C=(B5B4B3B2B1B0)2
 =B5 × 25 + B4 × 24 + B3 × 23 + B2 × 22 + B1 × 21 + B0 × 20
 =(B5 × 22 + B4 × 21 + B3 × 20)× 23 + (B2 × 22 + B1 × 21 + B0 × 20)× 1
 =(B5 × 22 + B4 × 21 + B3 × 20)× 81 + (B2 × 22 + B1 × 21 + B0 × 20)× 80
 
 = (
C1
C0
)8
chiffre octalvaleur binaire
0000
1001
2010
3011
4100
5101
6110
7111
Ainsi, pour passer de la représentation binaire d'un nombre à sa représentation octale, il suffit de remplacer chaque groupe de 3 bits par le chiffre octal correspondant.

Inversement, pour passer de la représentation octale à la représentation binaire, il faut convertir chaque chiffre octal en un triplet de bits correspondant à la valeur du chiffre.

Exemples

Conversion de la base 2 vers la base 8

Si la représentation binaire ne contient pas un nombre de bits multiple de 3, on effectue les regroupements à partir de la droite.

Conversion de la base 2 vers la base 16

Si la représentation binaire ne contient pas un nombre de bits multiple de 4, on effectue les regroupements à partir de la droite.

Conversion de la base 8 vers la base 2

Conversion de la base 16 vers la base 2

Hexadécimal, octal : utilité

La correspondance directe entre groupements de bits et chiffres en octal/hexadécimal permet d'avoir une écriture plus concise d'une information de nature binaire.

exemple d'utilisation de l'octal : les droits d'accès sous Linux

Chacun des 9 droits d'accès est stocké sur 1 bit : si le bit vaut 1, le droit correspondant est accordé. Si le bit vaut 0, le droit correspondant est refusé.
exemple :rwxr-xr--
représentation binaire111101100
représentation octale754
La commande chmod accepte les arguments en octal. Ainsi chmod 754 fichier modifiera en une fois les 9 droits d'accès avec les valeurs de l'exemple ci-dessus.

exemple d'utilisation de l'hexadécimal : codage des couleurs

Une couleur est souvent représentée par 3 valeurs de 8 bits, les composantes rouge (R), verte (V) et bleue (B). Ainsi, le blanc est défini par les valeurs ( 255 , 255 , 255 ), le noir par ( 0 , 0 , 0 ). Entre les deux, on trouve les couleurs du spectre visible et leurs nuances : jaune ( 255 , 255 , 0 ), mauve ( 255 , 0 , 255 ), etc...

Rappel

en langage CSS, les couleurs peuvent être exprimées de plusieurs façons :
  • nom : black, yellow...
  • composantes RVB en base 10 : rgb(255, 123, 34)
  • composantes RVB en base 16 : #FF7B22
  • Expérimentez avec ce sélecteur de couleurs :
Les langages de programmation permettent d'utiliser des préfixes pour définir la base de représentation des constantes numériques.

Python

Connectez-vous sur JupyterHub et créez un nouveau notebook. Observez et expliquez l'affichage produit par les instructions suivantes :
        print(  42)
        print(0o42)
        print(0x42)
        print(oct(42))
        print(hex(42))

Javascript

Créez un nouveau fichier Javascript et copiez-y le code ci-dessous. Lancez-le et expliquez l'affichage produit :
        console.log(  42);
        console.log(0o42);
        console.log(0x42);
        console.log((42).toString(8));
        console.log((42).toString(16));

Exercices

Effectuez les conversions demandées ci-dessous sans utiliser de calculatrice.