Formato de numeración en la sintaxis del código

0

Para el código, al que me refiero a continuación es la sintaxis:

Write_Parameter (0x00);

En la línea anterior, ¿qué significa "x" y cuál es el tamaño de los datos para x? Mi suposición es su formato dec.

Entonces, ¿qué otro formato podemos usar?

Gracias.

    
pregunta Electroholic

3 respuestas

9

0x seguido de una serie de dígitos significa un número hexadecimal en C y muchos otros idiomas (otros formatos comunes son decimal, octal y binario).

El número de dígitos después de x representa el número de bits, en múltiplos de 4:

0x0        - 4 bits (or one "nibble")
0x00       - 8 bits (or one byte)
0x0000     - 16 bits
0x000000   - 24 bits
0x00000000 - 32 bits

Pero como señala Nick Johnson, independientemente del número de dígitos en la constante, en C una constante numérica se trata como un int, a menos que tenga un sufijo l o L, o esté precedida por una conversión. En máquinas de 8 y 16 bits, un int suele ser de 16 bits, y en máquinas de 32 bits es de 32 bits.

Debido a que el número es hexadecimal, cada dígito puede representar uno de los 16 valores, 0-9 y AF (A = 10, B = 11, C = 12, D = 13, E = 14 y F = 15).

Cada posición de dígito, de derecha a izquierda, representa un "nibble" hexadecimal o cuatro bits, con un valor de marcador de posición de 1, 16, 256, 4096, 65536, etc.

Entonces, 0x0ABC, por ejemplo, sería igual a 2748:

4096   256   16     1

  0     A     B     C     =>     0*4096 + 10*256 * 11*16 + 12*1 = 2748

El 0 después de la x se podría omitir y terminarías con lo mismo.

El mayor valor sin firmar en cada uno de los campos de arriba es:

0xf        - 15         (2⁴-1)
0xff       - 255        (2⁸-1)
0xffff     - 65535      (2¹⁶-1)
0xffffff   - 1677215    (2²⁴-1)
0xffffffff - 4294967295 (2³²-1)
    
respondido por el tcrosley
5

Si está utilizando C (no especificó), los datos se pueden representar de las siguientes maneras:

  • Los números que comienzan con 0 son octales (por ejemplo, 0123 es binario 001010011)
  • Los números que comienzan con 0x son hexadecimales (por ejemplo, 0x1A es binario 00011010)
  • Los números que comienzan con 0b son binarios
  • Los números que comienzan con los dígitos 1-9 son decimales
  • 'a' es un carácter que representa el valor decimal 97 (binario 01100001)

Algunos compiladores (no muchos como esto no es parte del estándar C) aceptan 0b como binario. Gcc no (¡Gracias a Rev1.0 por la corrección!).

    
respondido por el jcoppens
3

En C (y muchos otros lenguajes de programación) "0x" indica un número hexadecimal.

Como su ejemplo muestra dos dígitos después del "0x", ese parámetro debe ser de 8 bits. Cada dígito hexadecimal representa cuatro bits.

"0b" indicaría binario. Si no hay prefijo, el número es decimal.

    
respondido por el Peter Bennett

Lea otras preguntas en las etiquetas