web-dev-qa-db-fra.com

Comment transformer un hexadécimal en nombre décimal en utilisant le cerveau?

Ouvrir la calculatrice pour faire des choses aussi minuscules me semble ennuyeux et je crois fermement que dire «plus vous en savez, mieux c'est! alors voici je vous demande comment convertir hexadécimal en décimal.

Jusqu'à ce moment-là, j'utilise la formule suivante:

Hex:        Decimal:
12          12+6
22          22+2*6
34          34+3*6
49          49+4*6
99          99+9*6

Je suis confus quand je passe à des nombres plus élevés comme C0 ou FB

Quelle est la formule (cérébrale, non fonctionnelle) que vous utilisez?

20
Ivan Prodanov

Si vous considérez que l'hexadécimal est la base 16, c'est en fait assez simple:

Commencez par le chiffre le moins significatif et travaillez vers le plus significatif (de droite à gauche), multipliez le chiffre par une puissance croissante de 16, puis additionnez le résultat.

Par exemple:

0x12 = 2 + (1 * 16) = 18

0x99 = 9 + (9 * 16) = 153

Ensuite, rappelez-vous que A = 10, B = 11, C = 12, D = 13, E = 14 et F = 15

Alors,

0xFB = 11 + (15 * 16) = 251

37
Andre Miller

Ce n'est pas la formule… ce n'est même pas un peu comme la formule….

La formule est la suivante:

X * 16 ^ y où X est le nombre à convertir et y la position du nombre (de droite à gauche).

Donc .. si vous voulez convertir DA145 en décimal, ce serait ..

(5 * 16 ^ 0) + (4 * 16 ^ 1) + (1 * 16 ^ 2) + (10 * 16 ^ 3) + (13 * 16 ^ 4)

Et vous devez vous rappeler que la lettre est:
A - 10
B - 11
C - 12
D - 13
F - 14
F - 15 

15
gbianchi

J'ai à peu près cessé de le faire lorsque j'ai découvert que les nombres hexadécimaux sur lesquels je travaillais étaient 32 bits. Pas beaucoup de plaisir là-bas.

Pour des nombres plus petits, j'ai (éventuellement) mémorisé certains modèles: 10 = 16, 20 = 32, 40 = 64, 80 = 128 (car 100 = 256 et 80 correspond à un bit de moins). 200 = 512 Je me souviens d'une machine que j'avais l'habitude d'utiliser et dont le format de page était 512 (je ne me souviens plus de quelle machine!). 1000 = 4096 parce que c'est la taille de page d'une autre machine.

C'est à peu près tout. Au-delà, j'ajoute.

8
John Saunders

Pour mémoire, votre cerveau utilise une méthode fonctionnelle pour trouver la réponse. Voici la fonction que mon cerveau utilise pour trouver la valeur d'un nombre hexadécimal:

  1. Divisez le nombre hexadécimal en chiffres individuels.
  2. Convertit chaque chiffre en valeur décimale (pour que 0-9 reste le même, A est 10, B est 11, etc.)
  3. En commençant au chiffre le plus à droite, multipliez chaque valeur par 16 ^ X puissance, où X est la distance entre le chiffre le plus à droite (le chiffre le plus à droite est 16 ^ 0 ou 1, le suivant est 16 ^ 1 ou 16, le suivant est 16 ^ 2 ou 256, etc.)
  4. Ajoutez toutes les valeurs ensemble.
7
Chris Lutz

Mémorisez les valeurs décimales de 20h, 40h, etc. jusqu'à E0h. (Je suppose que vous connaissez déjà 100h.) Ensuite, obtenez les valeurs décimales si d'autres nombres en ajoutant ou en soustrayant un nombre compris entre 1 et 16.

3
Robert L

La valeur décimale sera

20h = 0x16^0 + 2x16^1 = 0x1 + 2x16 = 0 + 32 = 32

en notation décimale, ou (32)10.

Pour 40h en hexa nous aurons 64 en décimal, pour EOH nous aurons 224 en décimal.

2
malik aamir

Pour déterminer la valeur décimale d'un index spécifique dans un mot, généralisée pour toutes les bases:

b^i*n

où b est la base, i est l'index dans le mot et n est la valeur numérique à l'index. Rappelez-vous ceci en vous rappelant que b, i, n = bin = est court pour binaire.

Exemples:


pour base2 (binaire) 1 000, obtenir la valeur où se trouve le 1:

b = base, c'est-à-dire base2: b = 2

i = index basé sur 0 dans Word, c'est-à-dire 1000, 1 est dans le 3ème index, i = 3

n = nombre indiqué dans l'index, c'est-à-dire 1000, le troisième index est 1, n = 1

oui, 2 ^ 3 * 1 = 8


pour base10 (décimal) 9 00, obtenir la valeur où se trouve le 9:

b = 10, i = 2, n = 9: 10 ^ 2 * 9 = 100 * 9 = 900


pour base16 (hexadécimal) 0x0 f 0, obtenir la valeur où se trouve le f:

b = 16, i = 1, n = 15 (0-9, a-f, f = 15): 16 ^ 1 * 15 = 16 * 15 = 240


Notez que cela peut être utilisé pour déterminer la valeur de chaque index dans un mot, puis chaque valeur peut être additionnée pour déterminer la valeur complète du mot.

par exemple. 1001, de gauche à droite (l'ordre n'a pas d'importance dans la somme):

(2 ^ 3 * 1 = 8) + (2 ^ 2 * 0 = 0) + (2 ^ 1 * 0 = 0) + (2 ^ 0 * 1 = 1) = 9

0
ferr