[英]C++ Do operation on bits of a std::bitset
我想將一個std :: bitset <16>的4個4位彼此相加。 我的意思是:
std::bitset<16> arr("1100 1100 1100 1100");
我想和這些4位數組。
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
);
一種可能的解決方案是:
unsigned long i = arr.to_ulong();
i = (i & (i >> 4) & (i >> 8) & (i >> 12)) & 0xf;
a = std::bitset<4>(i);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.