Doo*_*nyx 5 c++ binary bit bitset
当我使用时,
std::bitset<5> op1 (std::string("01001"));
std::bitset<5> op2 (std::string("10011"));
std::cout << (op1|=op2) << std::endl;
Run Code Online (Sandbox Code Playgroud)
显然一切都很好。
但我的问题是,如何使用两个不同大小的“std::bitset”进行 OR 运算?例如,
std::bitset<11> op1 (std::string("101110011"));
std::bitset<5> op2 (std::string("01001"));
std::cout << (op1|=op2) << std::endl;
Run Code Online (Sandbox Code Playgroud)
我无法在 VS 2012 中编译此代码。我在这里错过了什么?我不能使用不同大小的位集进行“或”运算(以及“异或”运算)吗?这是平台特定的问题吗?
该接口不直接支持这一点。您可以构造一个临时位集:
// assuming op1 is larger
op1 |= std::bitset<op1.size()>(op2.to_ullong())
Run Code Online (Sandbox Code Playgroud)
如果较大的位集的值不适合 a unsigned long long,您可以改为调用to_string。