簡體   English   中英

C ++對std :: bitset的位進行操作

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM