c++ bitset 怎么输出指定区间的位数3
发布网友
发布时间:2023-10-14 22:23
我来回答
共1个回答
热心网友
时间:2024-12-05 09:02
bitset本身没有这样的构造方法和赋值操作,如果经常要这样操作,可以自己定义一个函数:
template <size_t dlen, size_t slen>
bitset<dlen>& cpbitset(bitset<dlen>& des, const bitset<slen>& src,int pos,int bits)
{
if ((void*)&des==(void*)&src||pos>=des.size()||pos>=src.size())
return des;
if (pos+bits>=src.size()) bits=src.size()-pos;
if (pos+bits>=des.size()) bits=des.size()-pos;
for (int i=pos;i<pos+bits;++i)
des[i]=src[i];
return des;
}
使用:
bitset<15> b1(2047);
bitset<20> b2;
cpbitset(b2,b1,3,5); //复制从下标3(第4位)开始的5位 (3,4,5,6,7)
bs2 = (bs,0,1); //这个就是bs2=1; 右边的bs,0,1只是个逗号表达式而已