¿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 .


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

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


10

Es un número hexadecimal.

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


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 

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,

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.