标准::位集中<size>的可变位长度
Variable bit length in std::bitset<size>
我不知道如何正确解释这一点,但我正在寻找一种方法来自动设置bitset<size>
的size
或number
自动
示例
cout << bitset<8>(7) << endl;
具有固定位数的输出
0000 0111
我想像输出111
和11001
那样自动输出可变位数的比特,而不是使用固定比特。
基本上,当不使用时,我想把0
的前面剪掉
这实际上是两个问题合一。第一个是如何修剪给定位集的输出(即删除前导0
(,第二个是如何将输出减少到给定大小。
由于您只对ostream
输出感兴趣,因此对于这两种情况,使用bitset::to_string()
转换函数,然后应用string::substr
应该非常合适。
这样,对于您的示例——您似乎希望保留7
位——您将得到:
std::cout << std::bitset<8>{}.to_string().substr(1) << std::endl; //removes the first bit
您可以将其与查找第一个设置位的方法相结合,以构造trim
函数。
int main() {
int n;
cin >> n;
bitset<64> n2(n);
cout << n2.to_string().substr(64-n2._Find_first()-1) << endl;
}
CCD_ 13将找到第一个on位的索引。
我们将n2
转换为字符串,然后从索引中找到字符串的子字符串,在索引中我们找到最高有效位减去总长度-1,从而得到所需的结果。
测试用例:
256
100000000
相关文章:
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- 呼叫运营商<<临时
- 如何防止clang格式在流运算符调用之间添加换行符<<
- <<操作员在下面的行中工作
- EASTL矢量<向量<int>>连续的
- C - 创建矢量&lt; vector&lt; double&gt;&gt;矩阵具有分配而不是inizializ
- 为什么将此对向量&lt; map&lt; int,int&gt;&gt;中的地图进行更新.失败
- C :对矢量进行排序&lt; struct&gt;(结构有2个整数)基于结构的整数之一
- 明确的专业化“ CheckIntmap&lt;&gt;”实例化
- 什么是模板&lt;&gt;inline bla bla
- 编辑C Qlist&lt; object*&gt; gt;QML代码和一些QML警告中的模型
- eigen :: llt&lt;eigen :: matrixxd&gt;具有不完整的类型
- 错误,包括&lt; ctype&gt;在原子上使用C 11
- std::vector<;uint8_t>;当C++11/14启用时,手动复制而不是调用memcpy
- 如何加入向量&lt; int&gt;到C 中的单个INT
- 是std :: set&lt; std :: future&gt;不可能存在
- 是numeric_limits&lt; int&gt; :: is_modulo从逻辑上矛盾
- opencv 2.4.7在iOS错误背景_segm.hpp #include&lt; list&gt;未找到
- 在修改列表后,std :: list&lt; t&gt; :: end()的值是否会更改
- ///<评论></评论>在Visual Studio中