Importance de ces deux bases
Un ordinateur fonctionne à l'aide de millions, voire de milliards de transistors.
De façon schématique, un transistor ne permet de détecter que deux états (deux niveaux de tension), c'est la raison pour laquelle tout doit être traduit en 0 ou 1 pour une machine. Cela explique l'importance de la base 2 : un ordinateur ne peut comprendre un nombre que via son expression en base 2.
Si l'écriture en base 2 est adéquate pour une machine, elle ne l'est pas pour l'être humain. Il est difficile par exemple de lire une valeur telle que 1011101. Sa traduction en base 10 serait plus facile à comprendre et à manipuler.
Toutefois, le passage de la base 2 à la base 10 et réciproquement demande un certain travail, tandis que le passage de la base 2 à la base 16 (et vice-versa) est très simple. C'est la raison pour laquelle la base 16 est omniprésente en informatique.
Du binaire à l'hexadécimal
la technique
Comme 16 = 24, il est possible de passer d'une écriture binaire à une écriture hexadécimale de la façon suivante :
- On regroupe les bits de l'écriture binaire par paquets de quatre, en ajoutant au besoin des 0 à gauche de l'écriture.
Par exemple, N=101011deux est écrit sous la forme N= 0010 1011.
- On traduit chaque paquet de quatre en base seize. 0010deux = 2décimal = 2seize
et 1011deux = 11décimal = bseize.
- On 'concatène' ces chiffres : on a l'écriture hexadécimale. Ici N=2bseize.
Explication
Justifions le procédé décrit ci-dessus sur l'exemple donné :
\( 101011_{\text{binaire}} = (0\times 2^7 + 0\times 2^6 + 1\times 2^5 + 0\times 2^ 4 ) + ( 1\times 2^3 + 0\times 2^2 + 1\times 2^1 + 1 \times 2^0 ) \)
ou encore \( 101011_{\text{binaire}} = 2^4 \times (0\times 2^3 + 0\times 2^2 + 1\times 2^1 + 0\times 2^0 ) + ( 1\times 2^3 + 0\times 2^2 + 1\times 2^1 + 1 \times 2^0 ) \)
ce qui s'écrit aussi :
\( 101011_{\text{binaire}} = 16^1 \times (0\times 2^3 + 0\times 2^2 + 1\times 2^1 + 0\times 2^0 ) + 16^0 \times ( 1\times 2^3 + 0\times 2^2 + 1\times 2^1 + 1 \times 2^0 ) \)
ou encore
\( 101011_{\text{binaire}} = 16^1 \times 2 + 16^0 \times 11 \)
D'où l'égalité 101011binaire = 2bhexadécimal.
Il s'agit donc simplement de factoriser par \(2^4\), \( (2^4)^2 \), \( (2^4)^3 \)... en regroupant par paquets de 4 les termes de la combinaison linéaire
de l'écriture binaire.
Avec Javascript
On utilise les fonctions déjà vues :
De l'hexadécimal au binaire.
Si l'on dispose de l'écriture hexadécimale d'un entier N,
il suffit d'écrire chacun des chiffres de l'écriture hexadécimale en base deux (sur quatre rang, donc en ajoutant éventuellement
des zéros à gauche de chaque traduction de chiffre pour obtenir des paquets de longueur 4)
pour obtenir l'écriture en base deux de l'entier N.
Exemple. N=e7seize. Quelle est l'écriture de N en base 2 ?
On a eseize=1110deux et 7seize=111deux=0111deux.
D'où N=1110 0111deux.