web-dev-qa-db-fra.com

Quel est le système hexadécimal?

Quel est le système hexadécimal et pourquoi est-il utilisé tellement en informatique? Je sais que les ordinateurs utilisent 0s et 1S pour stocker des données, alors comment pouvons-nous utiliser hexadecimal?

13
Justin Krejcha

Hexadecimal est un système numérique très courant dans l'informatique. Vous avez peut-être entendu parler de binaire avant, ce qui n'a que 1 et 0s.

Les humains utilisent principalement le système décimal (base 10), dans lequel nous avons 10 chiffres:

0, 1, 2, 3, 4, 5, 6, 7, 8 et 9

Bien que les ordinateurs ne fonctionnent pas à l'aide du système décimal. Ils ont un état binaire (quelque chose est vrai ou faux) et fonctionne donc dans la base 2 (les nombres binaires sont généralement préfixés 0b) avec les seuls chiffres étant 0 et 1.

Dans les jours précédents, octal (ou base 8) a été utilisé. C'était bon parce que "10" dans la base 8 était "0B1000" en binaire (10 en décimal est de 1010 en binaire). L'octal est généralement préfixé "0O" lors de l'écriture de chiffres (mais est préfixé "0" dans la plupart des langages de programmation). C'est ce qu'on appelle la base 8 parce que nous avons huit chiffres.

L'octal est toujours utilisé aujourd'hui, principalement lorsque définir des autorisations in Unix et Linux

Au fil du temps, nous avions besoin d'un moyen plus facile de représenter des nombres plus importants, car la puissance de calcul et l'espace augmente rapidement. Il est devenu la norme à utiliser hexadécimal ou base 16, car 16, comme 8, une puissance de 2, ce qui facilite la conversion de chiffres par chiffre (voir ce commentaire . Parce qu'il y a 16 chiffres, des lettres ont été utilisées pour les autres numéros. En outre, Hex est généralement préfixé avec 0x.

Les numéros hexagonaux sont également utiles car un nombre hexadécimal est de 4 bits (1 nombre octal peut représenter 2) et donc deux nombres dans un octet. Dans la plupart des cas rédacteurs hexagonaux , voici comment un octet est représenté.

Compte

Dans la base 10, nous avons 10 chiffres. Après 9 ans, que faisons-nous? Nous sommes en dehors des chiffres. Nous créons une place "dizaines" à gauche du numéro d'origine, que ce soit 1 et le plus à droite devienne 0 à la droite. La même chose arrive aussi à hexadécimale:

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, 10, 11, etc.

Jusqu'à ce que nous arrivions à 0x1f, puis le processus répète jusqu'à 0xFF (255 en décimal), puis nous obtenons 0x100. Plus d'informations sur le comptage peuvent être trouvées ici .

Voici un tableau montrant des conversions entre décimale, hexadécimale, octale et binaire: Hexadecimal Conversion Chart

31
Justin Krejcha

Quel est le système hexadécimal

Le système hexadécimal est le système de numérotation de base-16 qui utilise 16 chiffres (0123456789ABCDEF), par opposition à binaire qui utilise 2 (01), ou décimal qui utilise 10 (0-9). Comme il n'y a que 10 chiffres numériques (dans notre système), des lettres de A à F sont utilisées pour décrire "chiffre # 10", "" chiffre n ° 11, "etc.

pourquoi est-il utilisé tellement dans l'informatique

16 est une puissance de 2, ce qui facilite la conception de nombres hexadécimaux en numéros binaires et, comme vous l'avez noté, "les ordinateurs utilisent 0s et 1S pour stocker des données." Étant donné que chaque chiffre stocke exactement 4 bits de données, un chiffre hexadécimal peut être converti en 4 chiffres binaires (1 bit) très facilement, et inversement.

| hex bin  | hex bin  |
| 0   0000 | 8   1000 |
| 1   0001 | 9   1001 |
| 2   0010 | A   1010 |
| 3   0011 | B   1011 |
| 4   0100 | C   1100 |
| 5   0101 | D   1101 |
| 6   0110 | E   1110 |
| 7   0111 | F   1111 |

comment va-t-il utiliser hexadecimal

Il est plus facile que binaire de représenter de grands nombres. Juste deux chiffres hexadécimaux peuvent représenter 256 valeurs différentes, comme dans:

dec  0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ...
hex 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 ...

Quatre chiffres hexagonales peuvent représenter 65536 valeurs, etc. HEX facilite beaucoup plus facilement les données avec quelque chose appelé A heexdump , car des lettres, des chiffres et une ponctuation sont stockées dans un format qui correspond à chaque caractère d'un nombre compris entre 0 et 256 (appelé ASCII , ou parfois à l'aide d'autres codages). En outre, de nombreux autres formats de fichiers (comme PNG) sont adaptés à ce que chaque information composée du fichier contient 256 bits.

En résumé, 16 est une puissance de 2 et 256 est une puissance de 16. Cela en fait un bon moyen de représenter à la fois des chiffres binaires et du texte ou d'autres données.

4
Doorknob

Quel est le système hexadécimal?

Si vous avez un numéro abcd, cela équivaut à ((A * + B) + c) + d. Donc c'est comme:

  • abcd (binaire) = ((A * 2 + B) * 2 + c) * 2 + D
  • aBCD (octal) = ((A * 8 + B) * 8 + C) * 8 + D
  • aBCD (décimal) = ((A * 10 + B) * 10 + C) * 10 + D
  • abcd (hexadécimal) = ((a * 16 + b) * 16 + c) * 16 + D

Dans un système hexadécimal, vous avez besoin de 16 chiffres, mais nous n'avons que dix chiffres disponibles (0..9). Donc, pour les 6 chiffres manquants, les caractères A..f sont utilisés avec A = 10, ..., F = 15.

Bien sûr, vous pouvez également penser à de nombreux autres systèmes de nombres, par exemple avec la base de 5 ou 7.

Pour calcul avec des chiffres, cela n'a pas d'importance quelle base vous utilisez. Vous pouvez ajouter et multiplier dans le système binaire, vous pouvez le faire dans le système décimal et vous pouvez le faire dans le système hexadécimal. Nous sommes habitués à calculer dans le système décimal, les ordinateurs le font dans le système binaire.

Pourquoi le système hexadécimal est-il utilisé tant dans l'informatique?

Comme indiqué ci-dessus, peu importe dans quel système vous donnez un numéro. Le nombre sous-jacent est le même, seule la représentation change. L'ordinateur va toujours stocker et utiliser (par exemple calculera avec) les numéros en binaire.

Alors, pourquoi les programmeurs (comme moi) utilisent-ils différents systèmes de numéros? Il y a deux raisons de choisir un système de numéros basé sur une puissance de 2. première est une essence et la seconde est une bonne vue de laquelle les bits sont définis.

Essentiel

Si j'ai une fonction qui écrit le contenu d'un tampon à la console, je pourrais écrire un code qui imprime en décimal, qui est de 1 à 3 chiffres (décimal: 0..255). Si j'écris le nombre en format binaire, je me retrouverais avec une sortie de 1 à 8 chiffres (binaire: 0..11111111). Je pourrais également utiliser un système octal et se retrouver avec 1 à 3 chiffres (octal: 0..377) ou hexadécimal avec 1 à 2 chiffres (hexadécimal: 0..ff).

C'était pour un octet seulement. Supposons maintenant que vous voulez écrire un numéro 32 bits:

  • binaire: 0..111111111111111111111111111111
  • octal: 0..37777777777
  • décimal: 4294967295
  • hexadécimal: 0..ffffffff

Comme vous pouvez le voir, la sortie hexadécimale est la plus courte.

Voir les bits

Un modèle commun pour stocker des informations emballés consiste à utiliser chaque bit dans un octet individuellement. Prenons par exemple des attributs de fichier (voir [~ # ~ # ~] MDSN [~ # ~] ). Vous voulez les attributs "cachés", "archives", "readonly", "temporaire" et autres. Vous pouvez stocker chaque attribut dans un octet ou vous pouvez emballer les informations en un octet (ou plusieurs octets) où chaque bit représente exactement un attribut. Si vous regardez les DWFLAGSANDATtributes de l'article MSDN, vous pouvez voir que Windows utilise ce modèle.

Rester à la page MSDN prenons FILE_ATTRIBUTE_ENCRYPTED Par exemple, ce drapeau est décimal 16384 et hexadécimal 0x4000. Le principal "0x" est juste une convention de programmeur C pour marquer des chiffres hexadécimaux, nous allons donc simplement regarder 4000. Lorsque vous voulez savoir quels bits sont définis, vous devrez alors convertir 16384 en premier à Binary - rien que vous ne puissiez Normalement faire avec arithmétique mentale. Mais prenons hexadécimal 4000. C'est assez facile. 16 est 2 * 4, chaque numéro hexadécimal est donc exactement 4 bits. Par rapport à nous, nous convertissons juste 4 en binaire 0100 et les zéros à binary 0000 et nous sommes terminés.

Souvent, il ne s'agit pas des bits individuels, mais les programmeurs ont tendance à aligner les choses aux pouvoirs de 2. Nous aimons charger des programmes de ne pas être une adresse aléatoire mais à une adresse avec les bits les moins importants définis à zéro. De cette façon, si vous avez une adresse 0x12345678, vous pouvez facilement voir que cette adresse appartient au programme chargé sur 0x1234 et non à celui chargé à 0x03810000.

Préférence binaire, octal ou hexadécimal?

C'est une question de saveur. Si vous voulez directement voir les bits binaires pourrait aller bien. Pour les nombres longs binaires peut être frustrant si vous devez compter les chiffres pour voir si le bit 23 ou le bit 24 est défini. Cela est plus facile avec hexadécimal car chaque chiffre représente 4 bits, vous avez donc moins de comptage impliqué. Personnellement, j'utilise rarement octal. C'est très rare.

Mais pourquoi ne pas utiliser la base 32?

Base 32 est une puissance de 2, c'est génial. Mais vous auriez besoin de 32 chiffres comme 0..9, a..v. C'est beaucoup plus de chiffres à mémoriser (pouvez-vous facilement repérer quel numéro 's' répondrait à?). Une autre mise en garde est qu'avec la base 32, vous perdez la fonctionnalité intéressante que deux chiffres hexadécimaux sont exactement un octet, qui est vraiment pratique si vous regardez le contenu de la mémoire! Aussi avec la base 32, vous avez toujours besoin de 2 chiffres pour représenter les valeurs qu'un octet peut avoir. Pour une valeur 32 bits, vous n'avez besoin que de 7 chiffres au lieu de 8 chiffres hexadécimaux, mais ce n'est pas tant à vivre avec les inconvénients du système de base 32.

2
Werner Henze

Différents systèmes de représentation numérique utilisés aujourd'hui sont (= Inclure):
binaire, octal, décimal et hexadécimal.
Lequel choisir est souvent dépendant de la facilité d'utilisation pour la tâche à accomplir.

binaire est utilisé dans les systèmes informatiques et la technologie numérique en général, car il est facile de représenter dans l'électronique; Les fonctions pour les numéros de base-2 sont faciles à créer, de même que la représentation de ON/OFF, VRAI/FAUX, ou toute autre information similaire répétée à deux états.

octal est agréable d'avoir s'il existe des groupes de trois chiffres binaires, par ex. Comme c'est le cas dans les paramètres d'autorisation à UNIX/Linux.

sauter décimal un instant, hexadécimal est sympa de la même manière que l'octal, mais pour quatre chiffres binaires, et le fait que 8 bits, un octet, convient parfaitement à deux chiffres hexadécimaux. (= la réponse)
[.____] Cela suit que les groupes pai-8 bits dans un ordinateur sont facilement écrits, représentés et compris - c'est-à-dire; Très pratique dans une utilisation quotidienne lors de la rédaction de logiciels, des données de manutention (par exemple, des valeurs de couleur RVB dans HTML/CSS), formant des structures de données et toute autre chose similaire.

décimal. On pourrait deviner que le système décimal s'est développé du fait que nous avons dix doigts et orteils. Un seul chiffre représente le nombre d'éléments comptés, un pour chaque doigt jusqu'à la dix maximale.

Ceux-ci représentent des systèmes de numéro avec une base de:
2, 8, 10 et 16.

Généralement, la base indique combien de "articles" à un chiffre que vous pouvez compter, par ex. Binaire a deux, décimal a dix.
[.____ le système décimal.

Continuer avec le mode général: tout base 2 ou plus fonctionne ainsi que autre chose, tant que vous avez une belle représentation à un chiffre.

Les chiffres en décimal sont formés par:

 [.____] ... D * 10³ + C * 10² + B * 10¹ + a * 10⁰ [.____]

pour un nombre décimal "DCBA" - avec D, C, B, A, PICKED à partir de 0123456789

Maintenant, changez cela à:

 [.____] ... d * base³ + c * base² + b * base¹ + a * base⁰ [.____]

et vous avez une forme plus générale qui montre comment toute base 2 ou plus "fonctionne";
par exemple. une base à cinq chiffres, la base 5 pourrait être aussi pratique que l'une des autres ci-dessus, ou pourquoi pas un système de 12 chiffres (une douzaine) pour le temps (12 heures = la base 12 "10" 12, avec le premier "décimal" racontant lequel 1/12ème [5 minutes] d'une heure il est)

Remarque: ⁰¹²³ - Superscript 0123 Si votre écran affiche autre chose

1
Hannu