Vérifié contenu

Hexadécimal

Sujets connexes: Mathématiques

Contexte des écoles Wikipédia

Arrangeant une sélection Wikipedia pour les écoles dans le monde en développement sans internet était une initiative de SOS Enfants. Parrainage d'enfants aide les enfants du monde en développement à apprendre aussi.

Dans les mathématiques et l'informatique , hexadécimale (aussi base- 16, hexa ou hex) est un système numérique avec un radix, ou une base, de 16. On utilise seize symboles distincts, le plus souvent des symboles 0-9 représentent des valeurs de zéro à neuf, et A, B, C, D, E, F (ou a à f) représentent des valeurs de dix à quinze.

Son utilisation principale est comme une représentation par un humain de binaire valeurs codées, il est souvent utilisé dans l'électronique numérique et génie informatique. Puisque chaque chiffre hexadécimal représente quatre chiffres binaires ( bits) -également appelés un quartet, ce est un compact et facile à traduire raccourci pour exprimer les valeurs de base deux .

IBM introduit le système hexadécimal actuelle dans le monde de l'informatique; une version antérieure, en utilisant les chiffres de 0 à 9 et U - Z, a été introduit en 1956 par le Bendix ordinateur G-15.

Utilisations

0 hex = 0 décembre = 0 octobre 0 0 0 0
1 hex = 1 décembre = 1 octobre 0 0 0 1
2 hex = 2 décembre = 2 octobre 0 0 1 0
3 hex = 3 décembre = 3 octobre 0 0 1 1
4 hex = 4 décembre = 4 octobre 0 1 0 0
5 hex = 5 décembre = 5 octobre 0 1 0 1
6 hex = 6 décembre = 6 octobre 0 1 1 0
7 hex = 7 décembre = 7 octobre 0 1 1 1
8 hex = 8 décembre = 10 octobre 1 0 0 0
9 hex = 9 décembre = 11 octobre 1 0 0 1
Un hexagone = 10 décembre = 12 octobre 1 0 1 0
B hex = 11 décembre = 13 octobre 1 0 1 1
C hex = 12 décembre = 14 octobre 1 1 0 0
D hex = 13 décembre = 15 octobre 1 1 0 1
E hex = 14 décembre = 16 octobre 1 1 1 0
F hex = 15 décembre = 17 octobre 1 1 1 1

En calcul numérique, hexadécimal est principalement utilisé pour représenter octets. Les tentatives pour représenter les 256 valeurs d'octets possibles par d'autres moyens ont conduit à des problèmes. Représentant directement chaque valeur possible d'octets avec une représentation à caractère unique se heurte non imprimable caractères de contrôle dans l' ASCII jeu de caractères. Même si un ensemble standard de caractères imprimables ont été conçues pour chaque valeur d'octet, ni les utilisateurs ni le matériel d'entrée sont équipés pour traiter 256 caractères uniques. La plupart hex logiciel d'édition affiche chaque octet comme un seul caractère, mais les caractères non-imprimables sont généralement remplacé par période ou en blanc.

En URL, tous les caractères peuvent être codées à l'aide hexadécimal. Chaque séquence hexadécimal à 2 chiffres (1 octet) est précédé par un pour cent signe. Par exemple, l'URL http://en.wikipedia.org/wiki/Main%20Page substitue un espace (qui ne est pas permis dans les URL) avec le code hexadécimal pour un espace ( %20 ).

Hexadécimaux représentant

Dans les situations où il n'y a pas de contexte, un nombre hexadécimal peut être ambigu et confus avec des nombres exprimés dans d'autres bases. Il existe plusieurs conventions pour exprimer sans ambiguïté les valeurs. En mathématiques, un indice est souvent utilisé sur chaque numéro donnant explicitement la base: 159 10 159 est décimal; 159 159 16 est hexadécimal qui est égale à 10 345. Certains auteurs préfèrent un indice de texte, tel que 159 et 159 décimal hexadécimal.

Dans les systèmes de texte linéaires, tels que ceux utilisés dans la plupart des environnements de programmation d'ordinateur, une variété de méthodes ont été soulevées:

  • En URL, codes de caractères sont écrits comme des paires hexadécimaux préfixe % : http://www.example.com/name%20with%20spaces où %20 est l'espace (blanc) caractère, le code hexadécimal 20, ou 32 décimal.
  • En HTML, les caractères peut être exprimée en utilisant la notation hexadécimale ꯍ . les couleurs de référence sont exprimés en hexadécimal avec le préfixe # : #FFFFFF qui donne blanc.
  • Le langage de programmation C (et ses descendants) utiliser le préfixe 0x : 0x5A3 constantes de caractère et chaîne peuvent exprimer codes de caractères en hexadécimal avec le préfixe \x suivi de deux chiffres hexadécimaux: '\x1B' (spécifie le Esc Caractère de commande), "\x1B[0m\x1B[25;1H" est une chaîne contenant 11 caractères (sans compter une fuite NUL implicite). Pour une sortie en tant que valeur hexadécimale avec le printf famille de fonctions, le format code de conversion %X ou %x est utilisé.
  • Dans le Norme Unicode, une valeur de caractère est représenté avec U+ suivie de la valeur hexadécimale: U+20AC est le Signe Euro (€).
  • MIME (extensions e-mail) caractères cité-imprimables par code dans un text/plain MIME-part préfixe du corps des caractères ASCII non imprimables avec un égal à signer = , comme dans Espa=D1a envoyer "España" (Espagne).
  • Dans Intel dérivés langages d'assemblage, hexadécimal est indiqué avec un H ou h suffixe: FFh ou 0A3CH . Certaines implémentations nécessitent un zéro lorsque le premier caractère ne est pas un chiffre: 0FFh
  • Autres langages d'assemblage ( 6502, AT & T , Motorola), Pascal, et certaines versions de BASIC ( Commodore) et Utiliser Forth $ comme préfixe: $5A3 .
  • Certains langages d'assemblage (Microchip) utilisent la notation H'ABCD' (par ABCD 16).
  • * nix coquilles (UNIX et connexes) utilisent un caractère d'échappement forme \x0FF dans les expressions et 0xFF pour les constantes.
  • Ada et VHDL joindre chiffres hexadécimaux "citations numériques" sur la base: 16#5A3#
  • Verilog représente constantes hexadécimaux dans la forme 8'hFF , où 8 est le nombre de bits dans la valeur et FF est la constante hexadécimale.
  • Modula 2 et quelques autres langues utilisent # comme préfixe: #01AF
  • Le Langage de programmation Smalltalk utilise le préfixe 16r : 16r6EF7
  • Postscript indique hex avec le préfixe 16# : 16#ABCD . Les données binaires (tels que l'image pixels) peut être exprimé comme sans préfixe paires hexadécimaux consécutifs: AA213FD51B3801043FBC ...
  • Common Lisp utiliser les préfixes #x et #16r .
  • QBasic et Visual Basic, chiffres hexadécimaux avec préfixe &H : &H5A3
  • BBC BASIC utilise & pour hex.
  • TI-89 et 92 Série utilise 0h 0hA3 0h 0hA3
  • Notations telles que X'5A3' sont parfois considérés, comme dans PL / I. Ce est le format le plus courant pour hexadécimal sur des mainframes IBM ( zSeries) et mini-ordinateurs ( iSeries) en cours d'exécution traditionnels OS (zOS, zVSE, ZVM, TPF, OS / 400), et est utilisé en assembleur, PL / 1, Cobol, JCL, scripts, commandes et d'autres endroits. Ce format était commun sur d'autres (et maintenant obsolètes) systèmes IBM ainsi.
  • Donald Knuth introduit l'utilisation de caractères particulière pour représenter un radix notamment dans son livre Le TeXbook. Là, représentations hexadécimaux sont écrits dans une police de caractères de machine à écrire: 5A3
Un hexadécimale table de multiplication

Il n'y a pas de convention universelle d'utiliser minuscules ou majuscules pour les lettres chiffres, et chaque est répandue ou préféré par des environnements particuliers par les normes ou conventions communautaires.

Le choix des lettres A à F pour représenter les chiffres ci-dessus ne était pas neuf universel dans l'histoire des débuts de l'informatique. Durant les années 1950, certaines installations favorisées en utilisant les chiffres de 0 à 5 avec un caractère macron ("¯") pour indiquer les valeurs 10-15. Les utilisateurs de Bendix G-15 ordinateurs utilisé les lettres U à Z.

Représentations verbales

Non seulement il ya pas de chiffres pour représenter les quantités de dix à quinze lettres sont donc utilisés comme un substitut, mais plus Langues d'Europe occidentale manquent également une nomenclature de nommer des nombres hexadécimaux. «Treize» et «quatorze» sont décimal à base, et même si l'anglais a un nom pour plusieurs puissances non décimales: jumeler pour la première binaire pouvoir; marquer pour la première puissance vigésimal; douzaine, brut, et grande brute pour les trois premiers duodécimales pouvoirs. Toutefois, aucun nom anglais décrit les pouvoirs hexadécimaux (correspondant à la décimale valeurs 16, 256, 4096, 65536, ...). Certaines personnes lisent nombres hexadécimaux chiffre par chiffre comme un numéro de téléphone: 4DA est "quatre-dee-aye". Cependant, la lettre «A» des sons semblables à huit, «C» des sons semblables à trois, et «D» peut facilement être confondu avec le suffixe «Ty»: Est-ce 4D ou quarante ans? D'autres personnes d'éviter la confusion en utilisant le Alphabet phonétique de l'OTAN: 4DA est "quatre delta-alpha". De même, certains utilisent le Marine conjointe de l'armée / alphabet phonétique («quatre-dog-mesure"), ou d'un système ad hoc similaire.

Signes

Le système hexadécimal peut exprimer des nombres négatifs de la même manière que dans décimales: -2A pour représenter -42 et ainsi de suite.

Cependant, certains préfèrent au lieu d'exprimer les motifs de bits exacts utilisés dans le processeur et tenir compte des valeurs hexadécimaux mieux traitées comme des valeurs non signées. De cette façon, le nombre négatif -42 peut être écrite comme FFFF FFD6 dans un 32-bit registre de CPU, comme C228 0000 dans un 32-bit FPU inscrire ou C045 0000 0000 0000 dans un registre de la FPU 64 bits.

Fractions

Comme pour les autres systèmes de numération, le système hexadécimal peut être utilisé pour représenter des nombres rationnels , bien chiffres récurrents sont communs depuis seize (10h) ne dispose que d'un facteur premier simple (deux):

½
=
0,8
=
0,2 A AAAAAAA ... 1/A
=
0,1 9 99999999 ... 1/E
=
0,1 249 249 249 ...
=
0. 5 555 555 555 ... 1/7
=
0. 249 2492492 ... 1/B
=
0. 1745D 1745D ... 1/F
=
0. 1 111 111 111 ...
¼
=
0,4
=
0,2 1/C
=
0,1 5 55555555 ... 1/10
=
0,1
=
0. 3 333 333 333 ... 1/9
=
0. 1C7 1C71C71 ... 1/D
=
0. 13B 13B13B1 ... 1/11
=
0. 0F 0F0F0F0F ...

Pour ne importe quelle base, 0,1 (ou "10/01") est toujours équivalent à un divisé par la représentation de la valeur de base dans son propre système de numération: comptage en base 3 est 0, 1, 2, 10 (trois). Ainsi, si une division par deux de binaire ou diviser un par seize pour hexadécimal, ces deux fractions sont écrits que 0.1 . Étant donné que la base 16 est un carré parfait (4²), fractions exprimées en hexadécimal avoir une période bizarre beaucoup plus souvent que décimaux, et il ne sont pas numéros cycliques (autres que les simples chiffres insignifiants). Chiffres récurrents sont exposées lorsque le dénominateur en termes plus bas a un premier facteur ne trouve pas dans la base; Ainsi, en utilisant la notation hexadécimale, toutes les fractions avec des dénominateurs qui ne sont pas un puissance de deux résultat dans une chaîne infinie de chiffres (comme tiers et cinquièmes) récurrents. Cela rend hexadécimale (et binaire) moins pratique que décimal pour représenter des nombres rationnels depuis une plus grande proportion se situent en dehors de sa gamme de représentation finie.

Tous les nombres rationnels fini représentables en hexadécimal sont également fini représentable en décimal, duodecimal et sexagesimal: ce est-à ne importe quel nombre hexadécimal avec un nombre fini de chiffres a un nombre fini de chiffres lorsqu'il est exprimé dans les autres bases. Inversement, seule une fraction de ceux fini représentable dans les dernières bases sont représentable fini en hexadécimal: Ce est, décimaux 0,1 correspond à l'infini la représentation récurrente ,199999999999 ... en hexadécimal. Cependant, hexadécimal est plus efficace que les bases 12 et 60 pour représenter les fractions avec des puissances de deux dans le dénominateur (par exemple, décimal seizième est de 0,1 en hexadécimal, 0,09 dans duodecimal, 0; 3,45 en sexagésimal et 0,0625 en décimal).

Traduction binaire

La plupart des ordinateurs de manipuler les données binaires, mais il est difficile pour l'homme de travailler avec le grand nombre de chiffres, même pour un nombre relativement restreint binaire. Bien que la plupart des humains sont familiers avec le système de base 10, il est beaucoup plus facile de la carte binaire en hexadécimal à décimal parce que chaque cartes de chiffres hexadécimaux à un nombre entier de bits (4 10). Cet exemple convertit 1111 2 à base dix. Étant donné que chaque position dans un nombre binaire peut contenir soit un 1 ou 0, sa valeur peut être facilement déterminée par sa position de la droite:

  • 0001 2 = 1 10
  • 0010 2 2 10 =
  • 0100 2 4 = 10
  • 1000 2 8 = 10

Par conséquent:

1111 2 = 8 + 10 4 10 + 2 + 10 1 10
= 15 10

Avec étonnamment peu de pratique, la cartographie 1111 2 à 16 F en une seule étape devient facile: voir tableau en utilisations . L'avantage d'utiliser hexadécimal plutôt que l'augmentation décimaux rapidement avec la taille du nombre. Lorsque le nombre devient grand, la conversion en décimal est très fastidieux. Cependant, lors de la cartographie en hexadécimal, il est trivial de considérer la chaîne binaire que quatre groupes de chiffres et de cartographier chacun à un seul chiffre hexadécimal.

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

01011110101101010010 2 = 262 144 + 65 536 10 10 + 10 32 768 16 384 + 10 + 10 + 8192 + 2048 10 512 10 256 + 10 + 64 + 10 + 16 10 2 10
= 387 922 10

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

01011110101101010010 2 = 0101   1110   1011   0101   0010 2
&; Nbsp; = 5 E B 5 2 16
= 5EB52 16

La conversion hexadécimal en binaire est tout aussi directe.

Le système octal peut aussi être utile comme outil pour les personnes qui ont besoin de traiter directement avec les données informatiques binaires. Octal représente les données que trois bits par caractère, plutôt que quatre.

Conversion à partir d'autres bases

Addition et la multiplication

Il est également possible de faire la conversion en attribuant à chaque lieu dans la base source la représentation hexadécimale de sa place de valeur et en effectuant ensuite multiplication et d'addition pour obtenir la représentation finale.

Conversion via binaire

Comme la plupart des ordinateurs fonctionnent en binaire, la voie normale pour un ordinateur pour faire une telle conversion serait de convertir d'abord binaire (en faisant multiplication et l'addition en binaire), puis faire usage de la cartographie directe de binaire en hexadécimal.

Outils de conversion

La plupart des systèmes informatiques modernes avec interfaces utilisateur graphiques fournissent un utilitaire de calculatrice intégrée, capable d'effectuer des conversions entre les différentes grandes bases, y compris généralement hexadécimal.

Dans Microsoft de Windows , le Calculateur utilitaire peut être réglé pour mode calculatrice scientifique, qui permet des conversions entre radix 16 (hexadécimal), 10 (décimal), 8 ( octal) et 2 ( binaire ); les bases les plus couramment utilisés par les programmeurs. En mode scientifique, le sur l'écran pavé numérique comprend le chiffres hexadécimaux A à F qui sont actifs lorsque "Hex" est sélectionné.

Culturel

Étymologie

Ce est IBM qui a décidé sur le préfixe "hexa" plutôt que le préfixe latin correcte de "sexa". Le mot "hexadécimal" est étrange que hexa est dérivé du grec έξ (hex) pour "six" et la décimale est dérivé du latin pour «dixième». Il peut avoir été dérivé de la racine latine, mais deka grecque est si semblable à la decem latine que certains ne considéraient pas cette nomenclature incompatibles. Un terme plus ancien était le "sexidecimal" latine comme incorrect (latin correct est "sedecim" 16), mais qui a été changé parce que certaines personnes pensaient que ce était trop osée, et il y avait aussi un autre sens de " base 60 ". Cependant, le mot" sexagésimal "(base 60) conserve le préfixe. La documentation tôt Bendix a utilisé le terme" sexadecimal ". Donald Knuth a fait remarquer que le terme correct est étymologiquement "senidenary", du terme latin pour "regroupées par 16". (Les termes "binaire", "ternaire" et "quaternaire" sont de la même construction latine, et le terme étymologiquement correct pour "virgule" arithmétique est "denier".) Schwartzman note que la forme purement latine attendu serait "sexadecimal", mais les pirates informatiques seraient tentés de raccourcir le mot «sexe». Par ailleurs, le étymologiquement bon grec terme serait hexadecadic (bien que dans Moderne déca-hexadique grec (δεκαεξαδικός) est plus couramment utilisé).

Modèles et l'humour communes

Hexadécimal est parfois utilisé dans les blagues de programmeur parce que certains mots peuvent être formés en utilisant uniquement des chiffres hexadécimaux. Certains de ces mots sont "morts", "boeuf", "babe", et avec des substitutions appropriées "c0ffee". Puisque ce sont rapidement reconnaissable par les programmeurs, les configurations de débogage initialiser parfois mémoire pour les pour aider les programmeurs voir quand quelque chose n'a pas été initialisé. Certaines personnes ajoutent un H après un nombre si elles veulent montrer qu'il est écrit en hexadécimal. En plus Intel la syntaxe d'assemblage, ce est parfois le cas. " Hexspeak "peut être le précurseur du langage web moderne" 1337speak "

Un exemple est le nombre magique dans les fichiers FAT Mach-O et programmes de Java, qui est " CAFEBABE ". Fichiers unique architecture Mach-O ont un nombre magique " FEEDFACE "à leur début.

Un Knuth chèque de récompense est un dollar hexadécimale, ou $ 2,56.

Le tableau suivant montre une blague en hexadécimal:

 3x12 = 36
 2x12 = 24
 1x12 = 12
 0x12 = 18

Les trois premiers sont interprétés comme la multiplication, mais dans le dernier, les signaux "0x" interprétation hexadécimal de 12 ans, qui est de 18.

0xdeadbeef est parfois mis en mémoire non initialisée.

Une autre blague basée sur l'utilisation d'un mot contenant seulement des caractères de la première six dans l'alphabet (et donc celles utilisées en hexadécimal) est ...

Si seulement les gens comprennent DEAD hexadécimal, combien de personnes comprendre hexadécimal?
Dans ce cas, DEAD se réfère à un nombre hexadécimal (base 57 005 10), pas l'état de ne plus être en vie.

Microsoft Windows XP efface ses fichiers index.dat verrouillés avec les codes hexadécimaux: "0BADF00D".

Deux motifs de bits communs souvent utilisés pour le matériel de test sont 01010101 et 10101010 (leurs valeurs hexadécimales correspondantes sont 55h et AAH, respectivement). La raison de l'utilisation est d'alterner entre au large ("0") pour le ('1') ou vice versa lors de la commutation entre ces deux modes. Ces deux valeurs sont souvent utilisés ensemble que les signatures dans les secteurs du système de PC critiques (par exemple, le mot hexagonale, 0xAA55 qui, systèmes little-endian est 55h suivies par AAH, doivent, à la fin d'un cours de validité Master Boot Record).

Système de nombre primaire

Il ya eu des tentatives occasionnelles pour promouvoir hexadécimale que le système numérique préféré. Ces tentatives proposent généralement prononciation et / ou symbolique. Parfois, la proposition unifie des mesures standard de sorte qu'ils sont des multiples de 16.

Un exemple de mesures standard d'unification est Temps hexadécimal qui subdivise un jour de 16 sorte qu'il y ait 16 "" hexhours dans une journée.

Récupéré à partir de " http://en.wikipedia.org/w/index.php?title=Hexadecimal&oldid=199334662 "