En el código, a veces veo personas que especifican constantes en formato hexadecimal como este:
const int has_nukes = 0x0001;
const int has_bio_weapons = 0x0002;
const int has_chem_weapons = 0x0004;
//...
int arsenal = has_nukes | has_bio_weapons | has_chem_weapons; // all of them
if(arsenal &= has_bio_weapons){
std::cout << "BIO!!"
}
Pero no tiene sentido para mí usar el formato hexadecimal aquí. ¿Hay alguna manera de hacerlo directamente en binario? Algo como esto:
const int has_nukes = 0b00000000000000000000000000000001;
const int has_bio_weapons = 0b00000000000000000000000000000010;
const int has_chem_weapons = 0b00000000000000000000000000000100;
//...
Sé que los compiladores de C/C++ no compilarán esto, pero ¿debe haber una solución? ¿Es posible en otros lenguajes como Java?
Solución del problema
En C++14 podrá usar literales binarios con la siguiente sintaxis:
0b010101010 /* more zeros and ones */
Esta característica ya está implementada en la versión más reciente clang
y gcc
. Puede probarlo si ejecuta esos compiladores con la -std=c++1y
opción.
No hay comentarios.:
Publicar un comentario