std ::bitset<16>の4ビットを互いにANDします。つまり:
std::bitset<16> arr("1100 1100 1100 1100");
これらの4ビット配列をANDします。
std::bitset<4> a;
a = 1100&1100&1100&1100
これを最も効率的な方法で行いたいと思います。forループを使用していません。
前もって感謝します。
std ::bitset<16>の4ビットを互いにANDします。つまり:
std::bitset<16> arr("1100 1100 1100 1100");
これらの4ビット配列をANDします。
std::bitset<4> a;
a = 1100&1100&1100&1100
これを最も効率的な方法で行いたいと思います。forループを使用していません。
前もって感謝します。
ビットセットをスライスするショートカットはありません。ちょっとした作業をしてください
a[0] = arr[0] & arr[4] & arr[8] & arr[12];
等
コンピュータが16ビットをチェックするのに時間がかかることはありませんが、あなたはそれを行います!
ターゲットとソースがいくつのビットであるかを知っている限り、これを行うことができます。
std::bitset<16> arr("1100110011001100");
std::bitset<4> v (
((arr ) &
(arr>>4 ) &
(arr>>8 ) &
(arr>>12)).to_ulong()
& 0x0f
);
考えられる解決策の1つは次のとおりです。
unsigned long i = arr.to_ulong();
i = (i & (i >> 4) & (i >> 8) & (i >> 12)) & 0xf;
a = std::bitset<4>(i);