O que significam os números usando a notação 0x?


107

O que significa um 0xprefixo em um número?

const int shared_segment_size = 0x6400;

É de um programa C. Não consigo lembrar o que significa e particularmente o que a carta xsignifica.


2
Pesquise por "notação hexadecimal"
advogado de

2
Obrigado @asawyer. Antes de escolher "0x" como hexadecimal, eu não tinha ideia de onde pesquisar.
Terry Li

3
Pesquisar 0x prefix C++traz você aqui agora :)
Carl Smith

Respostas:


111

Literais que começam com 0xsão inteiros hexadecimais. (base 16)

O número 0x6400é 25600.

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

Para um exemplo incluindo letras (também usado em notação hexadecimal onde A = 10, B = 11 ... F = 15)

O número 0x6BF0é 27632.

6 * 16^3 + 11 * 16^2 + 15 * 16^1 = 27632
24576    + 2816      + 240       = 27632

2
O que eu estava pensando, como os números negativos devem ser denotados em hexadecimal? Como -0xff ou 0x-ff? Acho que o primeiro, mas não sei.
Luc

7
@Luc O primeiro está correto. Embora mais frequentemente eu veja apenas 0xffffffffe tal. ( 0xffffffff = -1para int de 32 bits assumindo complemento de 2)
Mysticial

@Luc Números negativos são representados em binário usando o complemento de 2 - uma maneira inteligente que não requer o sinal '-'. Então, basicamente está convertendo de binário em hexadecimal, negativo ou positivo.
Shuvo Sarker

@ShuvoSarker Obrigado pela adição! No entanto, essa é apenas a representação da memória, acho semelhante a se concordássemos que temos um conjunto de números de 0 a 999 e que 1000 a 1999 representaria os números negativos. Minha pergunta era sobre notação legível por humanos, embora saber como os computadores fazem isso possa ajudar outra pessoa, então obrigado :)
Luc

16

Em C e em linguagens baseadas na sintaxe C, o prefixo 0xsignifica hexadecimal (base 16).

Assim, 0x400 = 4 × (16 2 ) + 0 × (16 1 ) + 0 × (16 0 ) = 4 × ((2 4 ) 2 ) = 2 2 × 2 8 = 2 10 = 1024, ou um K binário .

E então 0x6400 = 0x4000 + 0x2400 = 0x19 × 0x400 = 25K


10

É um número hexadecimal.

0x6400 se traduz em 4 * 16 ^ 2 + 6 * 16 ^ 3 = 25600


8

Os números que começam com 0xsão hexadecimais (base 16). 0x6400representa 25600.

Converter,

  • multiplique o último dígito por 1
  • adicione o penúltimo dígito vezes 16 (16 ^ 1)
  • adicione o terceiro último dígito vezes 256 (16 ^ 2)
  • adicione o quarto último dígito vezes 4096 (16 ^ 3)
  • ...e assim por diante

Os fatores 1, 16, 256, etc. são as potências crescentes 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 

7

SIMPLES

É um prefixo para indicar que o número está em hexadecimal, e não em alguma outra base. A linguagem de programação C usa isso para informar ao compilador.

Exemplo:

0x6400se traduz em 6*16^3 + 4*16^2 + 0*16^1 +0*16^0 = 25600.Quando o compilador lê 0x6400, ele entende que o número é hexadecimal com a ajuda do termo 0x. Normalmente podemos entender por (6400)16 or (6400)8ou qualquer base ..

A esperança ajudou de alguma forma.

Dia bom,

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.