在代码中,我有时会看到人们以十六进制格式指定常量,如下所示:
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!!"
}
但是在这里使用十六进制格式对我来说没有意义。有没有办法直接在二进制中做到这一点?像这样的东西:
const int has_nukes = 0b00000000000000000000000000000001;
const int has_bio_weapons = 0b00000000000000000000000000000010;
const int has_chem_weapons = 0b00000000000000000000000000000100;
// ...
我知道 C/C++ 编译器不会编译它,但必须有解决方法吗?是否可以使用其他语言(如 Java)?
原文由 Frank 发布,翻译遵循 CC BY-SA 4.0 许可协议
我会使用位移运算符:
它甚至比 0 的洪水还要好。