bitset学习小记
2014-08-26 17:44
204 查看
Cplusplus官网的资料:
http://www.cplusplus.com/reference/bitset/bitset/
http://www.cplusplus.com/reference/bitset/bitset/bitset/
bitset作为STL中一个位集,主要在涉及二进制位存储,操作时比较方便。
定义及基本操作:
bitset<n> b,定义一个包含n个二进制位的变量。
可以通过unsigned 值或string类型来初始化,如:
bitset<32> b(0xFFFF),表示将前16位初始化为1,后16位初始化为0;
string str = "1111111111111111";
bitset<32> b(str),作用同上,注意利用字符串初始化时,首先从字符串右端读入,并将其作为低位的值,
string str = "011";
bitset<32> b(str), 最低位开始依次为1, 1, 0,且长度不足时高位补0, 超过b的长度时,将字符串左端丢弃。
还可以指定字符串开始赋值的位置,和赋值长度。
string str = "10111";
bitset<5> b(str, 2, 3);
将字符串左端开始的第2个字符(最左端为第0个), 长度为3的字符串赋值给b,不足时,这里b的高位补0了。
b此时相当字符串”00111“。
常用转化函数:
to_ulong ();返回二进制串表示的unsigned long值;
to_string();返回string值。
应当特别注意的是,将b输出时,不论是以相应整数,还是相应字符串输出时,低位都应该在输出位置的右端,
string str = "011";
bitset<5> b(str);
cout<<b<<endl;
cout<<b.to_string();
上述输出为:
00011
00011
常用成员函数:
any() 是否存在位置为1的二进制位
none() 不存在置为1的二进制位?
count() 置为1的二进制位的个数
size() 总的二进制位的个数
[pos] 访问在pos处的二进制位
test(pos) pos处的二进制位是否为1
set() 所有位都置1
set(pos) pos处的二进制置1
reset() 所有二进制置0
reset(pos) pos处的二进制位置0
flip() 所有位置反
flip(pos) pos位置反
to_ulong() 返回一个 unsigned long 值
os<<b 位集输出到os流
好了终于弄明白了。
http://www.cplusplus.com/reference/bitset/bitset/
http://www.cplusplus.com/reference/bitset/bitset/bitset/
bitset作为STL中一个位集,主要在涉及二进制位存储,操作时比较方便。
定义及基本操作:
bitset<n> b,定义一个包含n个二进制位的变量。
可以通过unsigned 值或string类型来初始化,如:
bitset<32> b(0xFFFF),表示将前16位初始化为1,后16位初始化为0;
string str = "1111111111111111";
bitset<32> b(str),作用同上,注意利用字符串初始化时,首先从字符串右端读入,并将其作为低位的值,
string str = "011";
bitset<32> b(str), 最低位开始依次为1, 1, 0,且长度不足时高位补0, 超过b的长度时,将字符串左端丢弃。
还可以指定字符串开始赋值的位置,和赋值长度。
string str = "10111";
bitset<5> b(str, 2, 3);
将字符串左端开始的第2个字符(最左端为第0个), 长度为3的字符串赋值给b,不足时,这里b的高位补0了。
b此时相当字符串”00111“。
常用转化函数:
to_ulong ();返回二进制串表示的unsigned long值;
to_string();返回string值。
应当特别注意的是,将b输出时,不论是以相应整数,还是相应字符串输出时,低位都应该在输出位置的右端,
string str = "011";
bitset<5> b(str);
cout<<b<<endl;
cout<<b.to_string();
上述输出为:
00011
00011
常用成员函数:
any() 是否存在位置为1的二进制位
none() 不存在置为1的二进制位?
count() 置为1的二进制位的个数
size() 总的二进制位的个数
[pos] 访问在pos处的二进制位
test(pos) pos处的二进制位是否为1
set() 所有位都置1
set(pos) pos处的二进制置1
reset() 所有二进制置0
reset(pos) pos处的二进制位置0
flip() 所有位置反
flip(pos) pos位置反
to_ulong() 返回一个 unsigned long 值
os<<b 位集输出到os流
好了终于弄明白了。
相关文章推荐
- c++ bitset学习小记
- [学习小记]Java的反射机制
- 重定向学习小记(forward与sendRedirect)
- C++Primer学习小记
- C#学习小记4 下面的例子是关于方法复载
- C#学习小记7一个多载,及我想实验关于抽象类能否直接编译运行
- C#学习小记3 验证main()内可访问本类的私有属性
- C++Primer学习小记1
- ubuntu学习小记
- C#学习小记2 下面的例子很好玩
- 学习小记——RMI编程技术1
- 关于Linux的学习小记
- shtml学习,Tomcat配置SSI,及语法指令小记
- Log4j学习小记
- sniffer pro学习小记(更新ing)
- Java核心编程:卷I——学习小记
- Portal Starter Kit学习小记
- Python 学习小记:Python Tutorial
- Template学习小记
- C#学习小记6 关于构造器多载及个人对多载的感受