¿Qué significan los números que usan la notación 0x?

107

¿Qué significa un 0xprefijo en un número?

const int shared_segment_size = 0x6400;

Es de un programa C. No recuerdo a qué se xrefiere y, en particular, qué significa la letra .

Terry Li
fuente
2
Buscar "notación hexadecimal"
asawyer
2
@asawyer Gracias. Antes de tomar "0x" como hexadecimal, no tenía ni idea de dónde buscar.
Terry Li
3
La búsqueda 0x prefix C++te trae aquí ahora :)
Carl Smith

Respuestas:

111

Literales que comienzan con 0x son números enteros hexadecimales. (base 16)

El número 0x6400es 25600.

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

Para un ejemplo que incluye letras (también se usa en notación hexadecimal donde A = 10, B = 11 ... F = 15)

El número 0x6BF0es 27632.

6 * 16^3 + 11 * 16^2 + 15 * 16^1 = 27632
24576    + 2816      + 240       = 27632
Mística
fuente
2
Lo que me estaba preguntando, ¿cómo se deben denotar los números negativos en hexadecimal? ¿Como -0xff o 0x-ff? Supongo que el primero, pero no lo sé.
Luc
7
@Luc El primero es correcto. Aunque más a menudo veo justo 0xffffffffy tal. ( 0xffffffff = -1para int de 32 bits asumiendo el complemento de 2)
Mysticial
Los números de @Luc Negatives se representan en binario usando el complemento a 2, una forma inteligente que no requiere el signo '-'. Entonces, básicamente se convierte de binario a hexadecimal, negativo o positivo.
Shuvo Sarker
@ShuvoSarker ¡Gracias por la adición! Sin embargo, esa es solo la representación de la memoria, supongo que es similar a si estuviéramos de acuerdo en que tenemos un conjunto de números del 0 al 999 y que 1000 al 1999 representarían los números negativos. Mi pregunta era sobre la notación legible por humanos, aunque saber cómo lo hacen las computadoras podría ayudar a alguien más, así que gracias :)
Luc
16

En C y los lenguajes basados ​​en la sintaxis de C, el prefijo 0xsignifica hexadecimal (base 16).

Por lo tanto, 0x400 = 4 × (16 2 ) + 0 × (16 1 ) + 0 × (16 0 ) = 4 × ((2 4 ) 2 ) = 2 2 × 2 8 = 2 10 = 1024, o una K binaria .

Y entonces 0x6400 = 0x4000 + 0x2400 = 0x19 × 0x400 = 25K

Saludos y hth. - Alf
fuente
10

Es un número hexadecimal.

0x6400 se traduce en 4 * 16 ^ 2 + 6 * 16 ^ 3 = 25600

Knittl
fuente
8

Los números que comienzan con 0xson hexadecimales (base 16). 0x6400representa 25600.

Para convertir,

  • multiplica el último dígito por 1
  • sumar el penúltimo dígito multiplicado por 16 (16 ^ 1)
  • sumar el tercer y último dígito multiplicado por 256 (16 ^ 2)
  • suma el cuarto-último dígito multiplicado por 4096 (16 ^ 3)
  • ...y así

Los factores 1, 16, 256, etc.son las potencias crecientes de 16.

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

o

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

SENCILLO

Es un prefijo para indicar que el número está en hexadecimal en lugar de en alguna otra base. El lenguaje de programación C lo usa para decirle al compilador.

Ejemplo:

0x6400se traduce en 6*16^3 + 4*16^2 + 0*16^1 +0*16^0 = 25600.Cuando el compilador lee 0x6400, entiende que el número es hexadecimal con la ayuda del término 0x. Por lo general, podemos entender por (6400)16 or (6400)8o cualquier base.

Hope ayudó de alguna manera.

Buen día,

loyola
fuente