Saltar al contenido

¿Qué significan “0b” y “0x” al asignar binario y hexadecimal?

Hola, hallamos la respuesta a lo que necesitas, has scroll y la verás más abajo.

Solución:

Todos y cada uno de los literales enteros que puede crear se resumen en el estándar C++ mediante la producción de gramática en [lex.icon]

integer-literal:
    binary-literal integer-suffixopt
    octal-literal integer-suffixopt
    decimal-literal integer-suffixopt
    hexadecimal-literal integer-suffixopt

binary-literal:
    0b binary-digit
    0B binary-digit
    binary-literal 'opt binary-digit

octal-literal:
    0
    octal-literal 'opt octal-digit

decimal-literal:
    nonzero-digit
    decimal-literal 'opt digit

hexadecimal-literal:
    hexadecimal-prefix hexadecimal-digit-sequence

binary-digit:
    0
    1

octal-digit: one of
    0  1  2  3  4  5  6  7

nonzero-digit: one of
    1  2  3  4  5  6  7  8  9

hexadecimal-prefix: one of
    0x  0X

hexadecimal-digit-sequence:
    hexadecimal-digit
    hexadecimal-digit-sequence 'opt hexadecimal-digit

hexadecimal-digit: one of
    0  1  2  3  4  5  6  7  8  9
    a  b  c  d  e  f
    A  B  C  D  E  F

Como podemos deducir de la gramática, hay cuatro tipos de literales enteros:

  • Decimal simple, que debe comenzar con un dígito distinto de cero.
  • Octal, cualquier número con un 0 inicial (incluido un 0 simple).
  • Binario, que requiere la prefix 0b o 0B.
  • Hexadecimal, requiriendo el prefix 0x o 0X.

El 0 inicial de los números octales se puede considerar como la “O” en “Octal”. Los otros prefijos usan un cero inicial para marcar el comienzo de un número que no debe interpretarse como decimal. “B” es intuitivamente para “binario”, mientras que “X” es para “élXadecimal”.

0b (o 0B) denota un literal binario. C++ lo ha permitido desde C++14. (Todavía no es parte del estándar C, aunque algunos compiladores lo permiten como una extensión). 0x (o 0X) es para hexadecimal.

0 puede usarse para denotar un literal octal. (Curiosamente 0 en sí mismo es un literal octal). Además utilizas el secuencia de escape seguido de dígitos para ser leídos en octal: esto se aplica solo cuando se define const char[] literales usando "" o char o literales de varios caracteres usando ''. los '' la notación que a menudo se ve para denotar NUL cuando se trabaja con cadenas explota eso.

En ausencia de un literal definido por el usuario sufijo, cualquier literal numérico que comience con un distinto de cero está en denario.

Hay rumores en el mundo de C++ para usar 0o para un literal octal y tal vez incluso eliminar el soporte para la versión cero inicial. Aunque eso sería un horrible cambio de última hora.

valoraciones y comentarios

Te invitamos a añadir valor a nuestra información aportando tu experiencia en las explicaciones.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *