VS2010中bitset类型不能用unsigned long类型初始化

C++ 标准里面定义的初始化bitset对象的方法有:

bitset b(u);

其中n为位数,u为unsigned long型。



最近遇到一个问题,需要求一个输入整数中的二进制1的个数。

如输入 int 5,在内存中的存储形式为00000000000000000000000000000101,二进制1的个数为2;

int -5, 在内存中的存储形式为1111111111111111111111111111011,二进制1的个数为31;


于是自然想到了C++的bitset类型,就遇到了 bitset不能用unsigned long初始化的问题。

VS2010中bitset类型不能用unsigned long类型初始化_第1张图片


在此做一下笔记——VS2010的bitset比较另类。

其实用long型初始化解决上面的二进制1的个数统计问题,更方便。

代码如下,仅供参考:

#include 
#include 
using namespace std;
using std::bitset;


int main()
{
	
    unsigned long num;
	int flag = 0;
	cin>>num;


	bitset<32> bitvec(num);
	cout<


你可能感兴趣的:(VC++)