c++ - 将值分配给来自多个 int 类型的位集

标签 c++ c++11 bitset

我正在使用以下列方式创建的位集

std::bitset<4> bitset;

我想知道如果我有整数,我怎么能给一个位集赋值 值 A=0,B=1,C=1,D=0

我读到过我可以做到这一点

bitset.set(0, false);
bitset.set(1, true);
bitset.set(2, true);
bitset.set(3, false);

我想知道是否有更快的方法?最好是单个语句?

最佳答案

举例

std::bitset<4> bitset(6UL);

I wanted to know how I can assign a value to a bitset if I have ints with the values A=0,B=1,C=1,D=0 ?

如果你有多个变量(每个位一个变量)我想你能做的最好的就是分配每一位,你怎么知道

bitset.set(0, (A != 0));
bitset.set(1, (B != 0));
bitset.set(2, (C != 0));
bitset.set(3, (D != 0));

或者,更简单,

bitset.set(0, A);
bitset.set(1, B);
bitset.set(2, C);
bitset.set(3, D);

如果你真的想用一条语句初始化(如果变量只有 01 值),我想你可以使用 bitshift

std::bitset<4> bitset((A << 3)|(B << 2)|(C << 1)|D);

关于c++ - 将值分配给来自多个 int 类型的位集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40141463/

相关文章:

c++ - c++中的位集操作

c++ - 如果未调用某些成员函数,是否可能生成编译时错误

c++ - 如何测量非ASCII字符的正确大小?

java - 如何让BitSet不被简化【JAVA】

c++ - boost::ref 没有发生匹配调用错误,但 std::ref 没有

c++ - 重现 C++ 11 随机生成器的相同结果

Java BitSet,子集与交集

C++模板参数: to find out if a parameter exists in parameter list during compilation time

c++ - 从 cin 获取方向键

c++ - ADTF 没有结构类型“错误的媒体描述