GOOGLE ADS

jueves, 21 de abril de 2022

¿Literales binarios?

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 clangy gcc. Puede probarlo si ejecuta esos compiladores con la -std=c++1yopción.

No hay comentarios.:

Publicar un comentario

Flutter: error de rango al acceder a la respuesta JSON

Estoy accediendo a una respuesta JSON con la siguiente estructura. { "fullName": "FirstName LastName", "listings...