我想将一个std::bitset 的4个4位彼此相加。我的意思是:

std::bitset<16> arr("1100 1100 1100 1100");

我想和这些4位数组。
std::bitset<4> a;

a = 1100&1100&1100&1100

我想以最有效的方式做到这一点。不使用for循环。

提前致谢。

最佳答案

只要您知道目标和源有多少位,就可以做到这一点。

std::bitset<16> arr("1100110011001100");
std::bitset<4> v (
    ((arr    ) &
     (arr>>4 ) &
     (arr>>8 ) &
     (arr>>12)).to_ulong()
     &   0x0f
);

关于c++ - C++对std::bitset的位进行操作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12640294/

10-09 03:34