sistema sirve que para numeros numeracion historia hexadecimales hexadecimal ejemplos binario c syntax hex

sirve - ¿Por qué los números hexadecimales son prefijados con 0x?



sistema hexadecimal ejemplos (4)

El 0 anterior se usa para indicar un número en la base 2, 8 o 16.

En mi opinión, se eligió 0x para indicar hex porque "x" suena como hex.

Solo mi opinión, pero creo que tiene sentido.

¡Buen día!

¿Por qué los números hexadecimales tienen el prefijo 0x ? Entiendo el uso del prefijo pero no entiendo la importancia de por qué se eligió 0x .


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:

0x6400 traduce a 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 o (6400) 8 o lo que sea ..

Para binario sería:

0b00000001

Espero haberte ayudado de alguna manera.

¡Buen día!


Nota: No sé la respuesta correcta, ¡pero la siguiente es solo mi especulación personal!

Como se ha mencionado un 0 antes de un número significa que es octal:

04524 // octal, leading 0

Imagine que necesita crear un sistema para denotar números hexadecimales y tenga en cuenta que estamos trabajando en un entorno de estilo C ¿Qué hay de terminar con h como asamblea? Desafortunadamente, no puede: le permitiría hacer tokens que son identificadores válidos (por ejemplo, podría nombrar una variable como la misma cosa) lo que generaría algunas ambigüedades desagradables.

8000h // hex FF00h // oops - valid identifier! Hex or a variable or type named FF00h?

No puedes liderar con un personaje por la misma razón:

xFF00 // also valid identifier

El uso de un hash probablemente se desechó porque entra en conflicto con el preprocesador:

#define ... #FF00 // invalid preprocessor token?

Al final, por cualquier razón, decidieron poner una x después de un 0 inicial para denotar hexadecimal. No es ambiguo, ya que aún comienza con un carácter numérico, por lo que no puede ser un identificador válido, y probablemente se basa en la convención octal de un 0 inicial.

0xFF00 // definitely not an identifier!


Historia corta: El 0 le dice al analizador que se trata de una constante (y no de un identificador / palabra reservada). Todavía se necesita algo para especificar la base numérica: la x es una opción arbitraria.

Historia larga: en la década de los 60, los sistemas numéricos de programación predominantes eran decimales y octales : los mainframes tenían 12, 24 o 36 bits por byte, lo cual es divisible por 3 = log2 (8).

El lenguaje BCPL usó la sintaxis 8 1234 para los números octales. Cuando Ken Thompson creó B a partir de BCPL, usó el prefijo 0 lugar. Esto es genial porque

  1. una constante entera ahora siempre consiste en un solo token,
  2. el analizador todavía puede decir de inmediato que tiene una constante,
  3. el analizador puede indicar inmediatamente la base ( 0 es el mismo en ambas bases),
  4. es matemáticamente sano ( 00005 == 05 ), y
  5. no se necesitan caracteres especiales preciosos (como en #123 ).

Cuando se creó C a partir de B, surgió la necesidad de números hexadecimales (el PDP-11 tenía palabras de 16 bits) y todos los puntos anteriores seguían siendo válidos. Debido a que los octales aún se necesitaban para otras máquinas, se seleccionó arbitrariamente 0x (probablemente se descartó 00 por ser incómodo).

C # es un descendiente de C, por lo que hereda la sintaxis.