Decimal (base 10)
Esta es la matematica comun a la que estas acostumbrado. Constantes sin ningun prefijo son tomadas como en formato decimal.
Código de Ejemplo:
n = 101; // lo mismo que decimal 101 ((1 * 10^2) + (0 * 10^1) + 1)
Binario (base 2)
Solo son validos los caracteres 0 y 1.
Código de Ejemplo:
n = B101; // lo mismo que el decimal 5 ((1 * 2^2) + (0 * 2^1) + 1)
El formateador binario solo trabaja en bytes (8 bits) entre 0 (B0) y 255 (B11111111). Si es conveniente introducir un int (16 bits) en forma binaria lo puedes hacer en un procedimiento de dos pasos, como:
myInt = (B11001100 * 256) + B10101010; // B11001100 es el byte alto`
Octal (base 8)
Solo son validos los caracteres 0 hasta 7. Los valores Octales se indican con el prefijo "0" (cero).
Código de Ejemplo:
n = 0101; // lo mismo que el decimal 65 ((1 * 8^2) + (0 * 8^1) + 1)
Es posible generar un bug dificil de encontrar incluyendo (sin intencion) un cero al principio de una constante, que el compilador interpretara como una constante octal.
Hexadecimal (base 16)
Los caracteres validos son del 0 al 9 y las letras A a la F; A tiene un valor de 10, B es 11, hasta F, que es 15. Los valores Hex se distinguen por el prefijo "0x". Toma nota que A-F puede ser indicado en mayusculas o minusculas (a-f).
Código de Ejemplo:
n = 0x101; // lo mismo que el decimal 257 ((1 * 16^2) + (0 * 16^1) + 1)
Notas y Advertencias
Por defecto, una constante tipo entero se maneja como un int con las correspondientes limitaciones en valores. Para indicar una constante tipo entero con otro tipo de datos, debes adicionar al final:
-
una 'u' o 'U' para forzar la constante en un formato de datos unsigned. Ejemplo: 33u
-
una 'l' o 'L' para forzar la constante en un formato de datos long. Ejemplo: 100000L
-
una 'ul' o 'UL' para forzar la constante en un formato de datos unsigned long. Ejemplo: 32767ul