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 | |
↓ | ↓ | ||||
= ( | )16 |
|
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 | |
↓ | ↓ | ||||
= ( | )8 |
|
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 : | r | w | x | r | - | x | r | - | - | |
---|---|---|---|---|---|---|---|---|---|---|
représentation binaire | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 0 | |
représentation octale | 7 | 5 | 4 |
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
- 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.
PythonConnectez-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)) | JavascriptCré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.