Que signifient les nombres utilisant la notation 0x?

107

Que signifie un 0xpréfixe sur un nombre?

const int shared_segment_size = 0x6400;

C'est à partir d'un programme C. Je ne me souviens pas de ce que cela xsignifie et surtout de ce que signifie la lettre .

Terry Li
la source
2
Recherche de "notation hexadécimale"
asawyer
2
@asawyer Merci. Avant de choisir "0x" comme hexadécimal, je n'avais aucune idée d'où chercher.
Terry Li
3
La recherche de 0x prefix C++vous amène ici maintenant :)
Carl Smith

Réponses:

111

Les littéraux commençant par 0xsont des entiers hexadécimaux. (base 16)

Le nombre 0x6400est 25600.

6 * 16^3 + 4 * 16^2 = 25600

Pour un exemple comprenant des lettres (également utilisé en notation hexadécimale où A = 10, B = 11 ... F = 15)

Le nombre 0x6BF0est 27632.

6 * 16^3 + 11 * 16^2 + 15 * 16^1 = 27632
24576    + 2816      + 240       = 27632
Mysticial
la source
2
Ce que je me demandais, comment les nombres négatifs devraient-ils être indiqués en hexadécimal? Comme -0xff ou 0x-ff? Je suppose le premier, mais je ne sais pas.
Luc
7
@Luc Le premier est correct. Bien que plus souvent je vois juste 0xffffffffet tel. ( 0xffffffff = -1pour un int 32 bits en supposant le complément de 2)
Mysticial
@Luc Les nombres négatifs sont représentés en binaire en utilisant le complément de 2 - une manière intelligente qui ne nécessite pas le signe «-». Donc, il s'agit essentiellement de convertir du binaire en hexadécimal, négatif ou positif.
Shuvo Sarker
@ShuvoSarker Merci pour l'ajout! C'est juste la représentation de la mémoire, je suppose, similaire à si nous convenons que nous avons un ensemble de nombres de 0 à 999 et que 1000 à 1999 représenterait les nombres négatifs. Ma question portait sur la notation lisible par l'homme, bien que savoir comment les ordinateurs le font pourrait aider quelqu'un d'autre, alors merci :)
Luc
16

En C et dans les langages basés sur la syntaxe C, le préfixe 0xsignifie hexadécimal (base 16).

Ainsi, 0x400 = 4 × (16 2 ) + 0 × (16 1 ) + 0 × (16 0 ) = 4 × ((2 4 ) 2 ) = 2 2 × 2 8 = 2 10 = 1024, ou un K binaire .

Et donc 0x6400 = 0x4000 + 0x2400 = 0x19 × 0x400 = 25K

Bravo et hth. - Alf
la source
10

C'est un nombre hexadécimal.

0x6400 se traduit par 4 * 16 ^ 2 + 6 * 16 ^ 3 = 25600

tricot
la source
8

Les nombres commençant par 0xsont hexadécimaux (base 16). 0x6400représente 25600.

Convertir,

  • multipliez le dernier chiffre par 1
  • ajouter l'avant-dernier chiffre multiplié par 16 (16 ^ 1)
  • ajouter le troisième-dernier chiffre multiplié par 256 (16 ^ 2)
  • ajouter le quatrième-dernier chiffre multiplié par 4096 (16 ^ 3)
  • ...etc

Les facteurs 1, 16, 256, etc. sont les puissances croissantes de 16.

0x6400 = (0*1) + (0*16^1) + (4*16^2) + (6*16^3) = 25600 

ou

0x6400 = (0*1) + (0*16) + (4*256) + (6*4096) = 25600 
Sithu
la source
7

FACILE

C'est un préfixe pour indiquer que le nombre est en hexadécimal plutôt que dans une autre base. Le langage de programmation C l'utilise pour indiquer au compilateur.

Exemple :

0x6400se traduit par 6*16^3 + 4*16^2 + 0*16^1 +0*16^0 = 25600.Lorsque le compilateur lit 0x6400, il comprend que le nombre est hexadécimal à l'aide du terme 0x. Habituellement, nous pouvons comprendre par (6400)16 or (6400)8ou n'importe quelle base.

L'espoir a aidé d'une certaine manière.

Bonne journée,

Loyola
la source