Article de reference

Hexadécimal

L'hexadécimal ( ou hex ) est un système de numération positionnel permettant de représenter une valeur numérique en base 16. Selon la convention la plus courante, un chiffre est...

L'hexadécimal ( ou hex ) est un système de numération positionnel permettant de représenter une valeur numérique en base 16. Selon la convention la plus courante, un chiffre est représenté par un chiffre de « 0 » à « 9 », comme en décimal , et par une lettre de l'alphabet de « A » à « F » (majuscule ou minuscule) pour les chiffres de valeur décimale de 10 à 15.

Le matériel informatique étant généralement de nature binaire et l'hexadécimal étant une puissance de 2 , la représentation hexadécimale est souvent utilisée en informatique comme représentation dense de l'information binaire . Un chiffre hexadécimal représente 4 bits contigus 491 s'écrirait en hexadécimal

représentation écrite

Convention commune

En règle générale, une convention de représentation hexadécimale autorise les lettres minuscules ou majuscules et traite la lettre de la même manière quelle que soit sa casse.

Lors de l'affichage de données non textuelles, une valeur stockée en mémoire est souvent représentée par une séquence de chiffres hexadécimaux séparés par des espaces. Par exemple, dans l' exemple de rendu hexadécimal suivant, chaque octet de 8 bits correspond à un nombre hexadécimal à deux chiffres, séparés par des espaces, tandis que le décalage de 32 bits au début correspond à un nombre hexadécimal à 8 chiffres.

00000000 57 69 6B 69 70 65 64 69 61 2C 20 74 68 65 20 66 00000010 72 65 65 20 65 6E 63 79 63 6C 6F 70 65 64 69 61 00000020 20 74 68 61 74 20 61 6E 79 6F 6E 65 20 63 61 6E 00000030 20 65 64 69 74 2C 20 69 6E 63 6C 75 64 69 6E 67 00000040 20 79 6F 75 20 28 61 6E 64 20 6D 65 29 21

Identification

Il existe plusieurs conventions pour exprimer qu'un nombre est représenté en hexadécimal.

  • Un indice décimal permet d'indiquer explicitement la base. Par exemple, 159 10 indique 159 en décimal, 159 16 indique 159 en hexadécimal. Certains préfèrent un indice textuel, comme 159 décimal et 159 hexadécimal , ou 159 d et 159 h
  • #xcode;TT
  • ou h : ou . Certaines implémentations exigent un zéro non significatif lorsque le premier caractère hexadécimal n'est pas un chiffre décimal, on écrirait donc au lieu de . D'autres implémentations (comme NASM) autorisent les nombres au format C ( ).FFh05A3H0FFhFFh0x42
  • H:&H5A3
  • ALGOL 68 utilise le préfixe 16rpour désigner les nombres hexadécimaux : 16r5a3, 16rC1F27ED. Les nombres binaires, quaternaires (base 4) et octaux peuvent être spécifiés de manière similaire.
  • Le format hexadécimal le plus courant sur les mainframes IBM ( série z ) et les ordinateurs de milieu de gamme ( IBM i ) exécutant les systèmes d'exploitation traditionnels ( zOS , zVSE , zVM , TPF , IBM i ) est ` X'5A3'x10 ...X'C1F27ED'

Implicite

Dans certains contextes, un nombre est toujours écrit en hexadécimal et, par conséquent, n'a pas besoin de notation d'identification.

  • Dans la norme Unicode , une valeur de caractère est représentée par point d'exclamation inversé (¡).
  • Les références de couleur en HTML, CSS et X Window peuvent être exprimées avec six chiffres hexadécimaux (deux pour chaque composante rouge, verte et bleue, dans cet ordre) préfixés par magenta , par exemple, est représenté par un orange doré .
  • Dans l'encodage MIME (extensions de messagerie électronique) avec guillemets imprimables , les codes de caractères sont écrits sous forme de paires hexadécimales préfixées par ñ dans le jeu de caractères ISO/IEC 8859-1). )
  • Les données binaires PostScript (telles que les pixels d'une image ) peuvent être exprimées sous forme de paires hexadécimales consécutives sans préfixe : ...
  • Toute adresse IPv6 peut s'écrire sous la forme de huit groupes de quatre chiffres hexadécimaux (parfois appelés hextets ), chaque groupe étant séparé par un deux-points ( Les adresses IPv4 sont généralement écrites en décimal).
  • Les identifiants uniques globaux sont écrits sous la forme de trente-deux chiffres hexadécimaux, souvent regroupés par des tirets de taille inégale, par exemple

    Symboles alternatifs

    Proposition de notation hexadécimale de Bruce Alan Martin
    Proposition de notation hexadécimale de Ronald O. Whitaker.

    Parmi les autres représentations hexadécimales notables utilisant des symboles autres que les lettres « A » à « F » pour représenter les chiffres supérieurs à 9, on peut citer :

    • Dans les années 1950, certaines installations, comme Bendix-14, privilégiaient l'utilisation des chiffres 0 à 5 avec une ligne supérieure pour désigner les valeurs , , et 100 (1967) utilisait les lettres majuscules B , C , D , E , F et G pour les valeurs de 10 à 15.
    • Le Monrobot XI (1960) utilisait les lettres S , T , U , V , W et X pour les valeurs de 10 à 15.
    • L' ordinateur paramétrique NEC NEAC 1103 (1960) utilisait les lettres D , G , H , J , K (et éventuellement V ) pour les valeurs 10 à 15.
    • Le Pacific Data Systems 1020 (1964) utilisait les lettres L , C , A , S , M et D pour les valeurs de 10 à 15.
    • Bruce Alan Martin, du Laboratoire national de Brookhaven, considérait le choix de A à F comme « ridicule ». Dans une lettre à l’éditeur du CACM de 1968 , il proposa un tout nouvel ensemble de symboles basé sur l’emplacement des bits.
    • En 1972, Ronald O. Whitaker de Rowco Engineering Co. a proposé une police triangulaire permettant une « lecture binaire directe » afin de « permettre à la fois l'entrée et la sortie des ordinateurs sans tenir compte des matrices d'encodage ».
    • Certaines puces de décodage d'affichage à sept segments (par exemple, 74LS47) affichent une sortie inattendue en raison d'une logique conçue uniquement pour produire correctement les chiffres de 0 à 9.

Signe

Le système hexadécimal peut exprimer les nombres négatifs de la même manière qu'en décimal, en plaçant un signe moins (−) devant le nombre pour indiquer qu'il est négatif.

Motif binaire

L'hexadécimal permet d'exprimer la séquence de bits dans un processeur ; ainsi, une séquence de chiffres hexadécimaux peut représenter une valeur signée ou même une valeur à virgule flottante . De cette façon, le nombre négatif −42 10 peut être écrit FFFF FFD6 dans un registre CPU 32 bits (en complément à deux ), C228 0000 dans un registre FPU 32 bits ou C045 0000 0000 0000 dans un registre FPU 64 bits (selon la norme IEEE pour les nombres à virgule flottante ).

Notation exponentielle

Tout comme les nombres décimaux peuvent être représentés sous forme exponentielle , les nombres hexadécimaux le peuvent également. La notation P utilise la lettre P (ou p , pour « puissance »), tandis que E (ou e ) remplit une fonction similaire en notation décimale E. Le nombre qui suit le P est décimal et représente l' exposant binaire . Augmenter l'exposant de 1 multiplie par 2, et non par 16 : 20p0 = 10p1 = 8p2 = 4p3 = 2p4 = 1p5 . Généralement, le nombre est normalisé de sorte que les chiffres hexadécimaux commencent par 1 (zéro est généralement représenté par 0 sans P ).

Exemple : 1.3DEp42 représente .

La notation P est requise par la norme binaire à virgule flottante IEEE 754-2008 et peut être utilisée pour les littéraux virgule flottante dans l'édition C99 du langage de programmation C. ] À l'aide des spécificateurs de conversion %a ou %A , cette notation peut être produite par les implémentations de la famille de fonctions printf suivant la spécification C99 et la norme POSIX Single Unix Specification (IEEE Std 1003.1) .

Représentation verbale

Schéma de comptage des doigts hexadécimal

La plupart des langues européennes ne possèdent pas de mots non décimaux pour certains des chiffres de onze à quinze. Certains lisent les nombres hexadécimaux chiffre par chiffre, comme un numéro de téléphone, ou utilisent l' alphabet phonétique OTAN , l' alphabet phonétique conjoint armée/marine , ou un système similaire . Suite à l'adoption de l'hexadécimal par les programmeurs IBM System/360 , Magnuson (1968) a proposé un guide de prononciation attribuant des noms courts aux lettres hexadécimales : par exemple, « A » se prononçait « ann », « B » « bet », « C » « chris », etc. Un autre système de dénomination a été publié en ligne par Rogers (2007) ; il vise à rendre la représentation verbale identifiable dans tous les cas, même lorsque le nombre ne contient pas les chiffres A à F. Des exemples sont présentés dans les tableaux ci-dessous. Un autre système encore a été élaboré par Babb (2015), inspiré d'une plaisanterie de la Silicon Valley .

D'autres ont proposé d'utiliser les conventions du code Morse verbal pour exprimer des chiffres hexadécimaux de quatre bits, avec « dit » et « dah » représentant respectivement zéro et un, de sorte que « 0000 » est prononcé « dit-dit-dit-dit » (....), « dah-dit-dit-dah » (-..-) prononce le chiffre ayant une valeur de neuf, et « dah-dah-dah-dah » (----) prononce le chiffre hexadécimal pour 15.

Des systèmes de comptage sur les chiffres ont été conçus pour le binaire et l'hexadécimal. Arthur C. Clarke a suggéré d'utiliser chaque doigt comme un bit marche/arrêt, permettant ainsi de compter de zéro à 1023 × 10⁶ sur dix doigts. Un autre système permettant de compter jusqu'à FF¹⁶ ( 255 × 10⁶ ) est illustré à droite.

Conversion

Conversion binaire

La calculatrice programmable RPN HP-16C Computer Scientist de 1982 était conçue pour les programmeurs. L'une de ses principales caractéristiques était la conversion entre différents systèmes de numération (voir le nombre hexadécimal affiché).

La plupart des ordinateurs manipulent des données binaires, mais il est difficile pour un humain de travailler avec un grand nombre de chiffres, même pour un nombre binaire relativement petit. Bien que la plupart des gens connaissent le système décimal (base 10), il est beaucoup plus facile de convertir du binaire en hexadécimal qu'en décimal, car chaque chiffre hexadécimal correspond à un nombre entier de bits (4¹⁰ ) . Cet exemple convertit 1111² en base dix. Puisque chaque position dans un nombre binaire peut contenir soit un 1, soit un 0, sa valeur peut être facilement déterminée par sa position à partir de la droite :

  • 0001 2 = 1 10
  • 0010 2 = 2 10
  • 0100 2 = 4 10
  • 1000² = 8¹⁰

Donc:

Avec un peu de pratique, la conversion de 1111 2 en F 16 en une seule étape devient facile. L'avantage d'utiliser l'hexadécimal plutôt que le décimal augmente rapidement avec la taille du nombre. Lorsque le nombre devient grand, la conversion en décimal est très fastidieuse. En revanche, lors de la conversion en hexadécimal, il est trivial de considérer la chaîne binaire comme un ensemble de quatre chiffres et d'associer chaque groupe à un chiffre hexadécimal.

Cet exemple illustre la conversion d'un nombre binaire en décimal, en associant chaque chiffre à sa valeur décimale et en additionnant les résultats.

Comparez cela à la conversion en hexadécimal, où chaque groupe de quatre chiffres peut être considéré indépendamment et converti directement :

La conversion de l'hexadécimal au binaire est tout aussi directe.

Autres conversions simples

Bien que le système quaternaire (base 4) soit peu utilisé, il peut être facilement converti en hexadécimal ou en binaire et inversement. Chaque chiffre hexadécimal correspond à une paire de chiffres quaternaires, et chaque chiffre quaternaire correspond à une paire de chiffres binaires. Dans l'exemple ci-dessus, 2 5 C 16 = 02 11 30 4 .

Le système octal (base 8) se convertit également assez facilement, bien que ce ne soit pas aussi simple qu'avec les bases 2 et 4. Chaque chiffre octal correspond à trois chiffres binaires, et non à quatre. On peut donc convertir entre l'octal et l'hexadécimal en passant par une conversion intermédiaire en binaire, puis en regroupant les chiffres binaires par trois ou quatre.

Reste de division dans la base source

Comme pour toutes les bases, il existe un algorithme simple pour convertir la représentation d'un nombre en hexadécimal en effectuant des divisions entières et en calculant les restes dans la base source. En théorie, cela est possible à partir de n'importe quelle base, mais pour la plupart des humains, seule la base décimale et pour la plupart des ordinateurs, seul le binaire (qui peut être converti par des méthodes bien plus efficaces) se prêtent facilement à cette opération.

Soit d le nombre à représenter en hexadécimal, et la série h i h i−1 ...h 2 h 1 les chiffres hexadécimaux représentant le nombre.

  1. je ← 1
  2. h i ← d mod 16
  3. d ← (d − h i ) / 16
  4. Si d = 0 (retourner la série h i ) sinon incrémenter i et passer à l'étape 2

« 16 » peut être remplacé par toute autre base souhaitée.

Voici une implémentation JavaScript de l'algorithme ci-dessus permettant de convertir n'importe quel nombre en sa représentation hexadécimale sous forme de chaîne de caractères. Son but est d'illustrer cet algorithme. Toutefois, pour un traitement de données plus poussé, il est fortement conseillé d'utiliser les opérateurs bit à bit .

fonction toHex ( d ) { var r = d % 16 ; if ( d - r == 0 ) { return toChar ( r ); } return toHex (( d - r ) / 16 ) + toChar ( r ); }fonction toChar ( n ) { const alpha = "0123456789ABCDEF" ; retourner alpha . charAt ( n ); }

Conversion par addition et multiplication

Table de multiplication hexadécimale

Il est également possible d'effectuer la conversion en attribuant à chaque position de la base source sa représentation hexadécimale

ce qui correspond à 45997 en base 10.

Outils de conversion

De nombreux systèmes informatiques proposent une fonction de calculatrice capable d'effectuer des conversions entre différentes bases, notamment l'hexadécimal.

Sous Microsoft Windows , la Calculatrice , en mode Programmeur, permet les conversions entre l'hexadécimal et d'autres bases de programmation courantes.

arithmétique élémentaire

Les opérations élémentaires telles que la division peuvent être effectuées indirectement par conversion vers un autre système numérique , tel que le système décimal couramment utilisé ou le système binaire où chaque chiffre hexadécimal correspond à quatre chiffres binaires.

On peut également effectuer des opérations élémentaires directement dans le système hexadécimal lui-même est une puissance de deux. Par exemple, 0,0625⁹ ( un seizième) est équivalent à 0,1⁹ , 0,09⁹ et 0,345⁶⁰ .

Nombres irrationnels

Le tableau ci-dessous donne le développement de quelques nombres irrationnels courants en décimal et en hexadécimal.

Pouvoirs

Les 16 premières puissances de 2 sont indiquées ci-dessous en hexadécimal pour illustrer leur relative simplicité par rapport à la représentation décimale.

Histoire culturelle

Les unités de mesure traditionnelles chinoises étaient en base 16. Par exemple, un jīn (斤) dans l'ancien système équivaut à seize taels . Le suanpan ( boulier chinois ) peut être utilisé pour effectuer des calculs hexadécimaux tels que des additions et des soustractions.

Comme pour le système duodécimal , des tentatives ponctuelles ont été faites pour promouvoir l'hexadécimal comme système de numération privilégié. Ces tentatives proposent souvent une prononciation et des symboles spécifiques pour chaque chiffre. Certaines propositions unifient les unités de mesure standard afin qu'elles soient des multiples de 16. Une des premières propositions de ce type a été avancée par John W. Nystrom dans son ouvrage intitulé « Project of a New System of Arithmetic, Weight, Measure and Coins: Proposed to be called the Tonal System, with Sixteen to the Base » , publié en 1862. Nystrom suggérait notamment un système horaire hexadécimal , qui subdivise la journée en 16, de sorte qu'il y a 16 « heures » (ou « 10 tims », prononcé « tontim ») dans une journée.

1020 (1964). La norme adoptée par IBM semble s'être largement répandue dès 1968, date à laquelle Bruce Alan Martin, dans sa lettre à l'éditeur du CACM, déplore que…

Le choix absurde des lettres A, B, C, D, E, F comme symboles numériques hexadécimaux ne fait qu'aggraver les difficultés déjà rencontrées pour distinguer les nombres octaux (ou hexadécimaux) des nombres décimaux (ou des noms de variables). Il est donc grand temps de revoir notre système de symboles numériques. Il aurait fallu le faire avant que ces mauvais choix ne deviennent la norme de facto !

L'argument de Martin était que l'utilisation des chiffres de 0 à 9 dans les nombres non décimaux « implique un système de numération décimale » : « Pourquoi ne pas utiliser des symboles (et des noms) entièrement nouveaux pour les sept ou quinze chiffres non nuls nécessaires en octal ou en hexadécimal ? Même l'utilisation des lettres de A à P constituerait une amélioration, mais des symboles entièrement nouveaux pourraient refléter la nature binaire du système. » Il a également soutenu que « la réutilisation des lettres alphabétiques pour les chiffres numériques représente un gigantesque retour en arrière par rapport à l’invention de glyphes distincts et non alphabétiques pour les chiffres il y a seize siècles » (comme les chiffres Brahmi , et plus tard dans un système de numération indo-arabe ), et que les normes ASCII récentes (ASA X3.4-1963 et USAS X3.4-1968) « auraient dû préserver six positions de table de code après les dix chiffres décimaux – plutôt que de les remplir inutilement de caractères de ponctuation » ( :;<=>???) qui auraient pu être placés ailleurs parmi les 128 positions disponibles.

Base16

Le Base16 est un système d'encodage binaire vers texte appartenant à la même famille que le Base32 , le Base58 et le Base64 . Les données sont divisées en séquences de 4 bits, et chaque valeur (de 0 à 15) est encodée par un caractère. Bien que n'importe quels 16 caractères puissent être utilisés, en pratique, on utilise les chiffres ASCII « 0 » à « 9 » et les lettres « A » à « F » (ou « a » à « f ») pour correspondre à la notation hexadécimale standard.

L'encodage Base16 est omniprésent en informatique moderne. Il constitue la base de la norme W3C pour l'encodage des pourcentages dans les URL , où un caractère est remplacé par le symbole de pourcentage « % » et sa forme encodée en Base16. La plupart des langages de programmation modernes prennent directement en charge la mise en forme et l'analyse des nombres encodés en Base16.

Les avantages du codage Base16 sont les suivants :

Les inconvénients comprennent :

Plus d articles de Worldlex Wiki

Revenez a l index pour explorer davantage de pages sur l histoire, la science, la culture, la geographie et la societe en francais.

Explorer l index