2012-03-02 59 views
9

Siempre me han enseñado 0-9 para representar valores de cero a nueve, y A, B, C, D, E, F para 10-15.0x00000000 hexadecimal?

Veo este formato 0x00000000 y no encaja en el patrón de hexadecimal. ¿Hay alguna guía o tutor en alguna parte que pueda explicarlo?

Busqué en Google hexadecimal pero no puedo encontrar ninguna explicación al respecto.

Así que mi segunda pregunta es, ¿hay un nombre para el formato 0x00000000?

+2

'0x0000' es un número hexadecimal. El '0x' indica que debe evaluarse en base 16 en lugar de 10. Sin él, no sabría si' 15' es decimal o hexadecimal (u octal). ¿Es eso lo que querías saber? –

+0

¿Hay un nombre para ese formato en particular o tengo que escribir en hexadecimal en Google esperando que aparezca ese formato? – nhat

+1

@nhat '0x' es un prefijo hexadecimal estándar, simplemente te dice que el siguiente número estará en hexadecimal. No debería ser necesaria una búsqueda en Google (solo tome lo que sepa sobre el hexadecimal y recuerde ese prefijo) – jzworkman

Respuesta

12

0x simplemente indica el número después de que estará en hexadecimal

así 0x00 es 0, 0x10 es 16, 0x11 es 17, etc

+0

ok si va por 1s, ¿por qué 0x0080 = 128? – nhat

+0

@nhat does not go one, cada lugar es un factor de 16, por lo que para su caso es 8 * 16 o 128 porque el 8 está en el lugar de los 16. – jzworkman

+0

Me di cuenta 0x00000080 = 0x0080. El formato de lo que me estaba confundiendo, pero después de mirar esto más, comienza a tener más sentido. – nhat

9

El 0x es sólo un prefijo (utilizado en C y muchos otros lenguajes de programación) para significar que el número siguiente es en base 16.

Otras notaciones que se han utilizado para hex incluyen:

$ABCD 
ABCDh 
X'ABCD' 
"ABCD"X 
+0

genial, gracias por la información. Nunca vi esos formatos antes. ¿Hay algún sitio en particular del que aprendiste eso? – nhat

+0

Trabajé con * todas * esas anotaciones incluso antes de que existiera internet. Entonces, ningún sitio web en particular. –

+1

lol cool gracias! – nhat

1

dígito hexadecimal s a menudo vienen precedidos de 0x para indicar que son dígitos hexadecimales. En este caso, hay 8 dígitos, cada uno representa 4 bits, por lo que son 32 bits o una palabra. Supongo que vio esto en un error, y es una dirección de memoria. Este valor significa nulo, ya que el valor hexadecimal es 0.

3

Todo después de x son dígitos hexadecimales (el 0x es solo un prefijo para designar hexadecimal), lo que representa 32 bits (si tuviera que poner 0xFFFFFFFF en binario, sería 1111 1111 1111 1111 1111 1111 1111 1111).

3

Sí, es hexadecimal.

de lo contrario, no puede representar A, por ejemplo. El compilador para C y Java lo tratará como identificador de variable. El prefijo agregado 0x le dice al compilador que es un número hexadecimal, entonces:

int ten_i = 10; 
int ten_h = 0xA; 

ten_i == ten_h; // this boolean expression is true 

Los ceros a la izquierda indican el tamaño : 0x0080 insinúa el número se almacena en dos bytes; y 0x00000080 representa cuatro bytes. Tal notación se utiliza a menudo para las banderas: si se establece un cierto bit, esa característica está habilitada.

P.S. Como una nota fuera del tema: si el número comienza con 0, entonces se interpreta como número octal, por ejemplo 010 == 8. Aquí 0 también es un prefijo.