bitset模板
构造方式
//构造函数1
#include <iostream>
#include <bitset>//必须引入该头文件
using namespace std;//全局位数组512M内存环境下数组大小可开到5000万以上
int main()
{
bitset<5000000> bin;//bin为位数组,初始为0,一般512M内存上限约为500万
bin[0]=1;//设为1
bin[1]=true;
bin[2]=0;//设为0
bin[3]=false;
cout<<bin[0]<<bin[1]<<bin[2]<<bin[3]<<bin[4];//打印出11000
system("pause");
}
//构造函数2
#include <iostream>
#include <bitset>//
using namespace std;
int main()
{
bitset<5> bin(5);//从左向右赋值
for(int i=0;i<=4;i++)
cout<<bin[i];//打印出10100
system("pause");
}
//构造函数3
#include <iostream>
#include <bitset>
using namespace std;
int main()
{
string temp="1010111100";
bitset<10> bin(temp);
for(int i=0;i<=9;i++)
cout<<bin[i];//打印出0011110101,注意,是从左向右依次填入的
system("pause");
}
//构造函数4
#include <iostream>
#include <bitset>
using namespace std;
int main()
{
string temp="1010111101";
bitset<10> bin(temp,4);//从第4位开始取值,包括第0位
for(int i=0;i<=9;i++)
cout<<bin[i];//打印出1011110000,注意,是从左向右依次填入的
system("pause");
}
//构造函数5
#include <iostream>
#include <bitset>
using namespace std;
int main()
{
string temp="1010111101";
bitset<10> bin(temp,4,5);//从第4个元素开始往后取5个元素,其余填作0
for(int i=0;i<=9;i++)
cout<<bin[i];//打印出0111100000,注意,是从左向右依次填入的
system("pause");
}
bitset模板:
#include <iostream>
#include <bitset>
using namespace std;
string temp="1010111101";
bitset<10> bin(temp);
void out()
{
for(int i=0;i<=9;i++)
cout<<bin[i];
cout<<endl;
}
int main()
{
out();
cout<<endl<<bin.any()<<endl;//是否存在置为1的位数
cout<<bin.none()<<endl;//是否全部为0,与any()相反
cout<<bin.count()<<endl;//二进制为1的个数
cout<<bin.size()<<endl;//总长度
bin.flip();//二进制位依次取反
out();
bin.flip(0);//第零位取反
out();
cout<<bin.operator[](2)<<endl;//获取第2位的值
bin.set();//将所有位全置为1
out();
bin.reset();//将所有位全置为0
out();
bin.set(0);//将第0位置为1
out();
bin.reset(0);//将第0位置为0
out();
cout<<bin.test(0)<<endl;//判断第0位是否为1
bin.set(0);
int x=bin.to_ulong();//转为整数1。注意从右向左取值及长度勿超过long型范围
cout<<x<<endl;
system("pause");
}
本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 未本地化版本许可协议进行许可。
本文链接:https://hs-blog.axell.top/archives/37/