棘手的BITSET应用程序,输出错误
tricky bitset application,error in output
我编写了一些代码,这些代码需要计算一个数字中的设置位数量为10^19。当我使用的是C 时,我使用了无符号的长long int来存储数字。
unsigned long long int b;
cin>>b;
int cnt=0;
while(b){
if(b&1)cnt++;
b>>=1;
}
上面的代码给出了正确的结果。但是,使用BITSET的以下代码给出了错误的结果。尽管似乎应该以完全相同的方式工作。
unsigned long long int b;
cin>>b;
bitset<64>foo(b);
int cnt=foo.count();
请注意,未签名的长时间int将适合64位,为10^19&lt; 2^64.一些额外的细节:使问题文本毫不丑陋,我将完整的代码添加为IDEONE链接,请注意。第51至57行http://ideone.com/4yamhz
根据http://www.cplusplus.com/reference/reference/bitset/bitset/bitset/bitset/,
C 98中的BITSET的构造函数允许长时间的未签名。C 11取而代之的是长期未签名。截断也许?您没有提及您使用的编译器,所以您去了...
相关文章:
- 输出错误,问题是找到总和5000位数字cpp
- 使用复制构造函数的程序输出错误
- 异或字符串加密/解密输出错误
- 在linux上使用g++输出错误,在windows上更正
- 使用递归函数 (c++) 将长字符串转换为整数时输出错误
- ECDSA 密钥对生成输出错误
- fscanf() 输出错误的值
- 输入 1024 后十进制到二进制转换的输出错误?
- 输出错误命令的条件语句
- cuSparse (cusparseDcsrgemm) 中的矩阵乘法输出错误的结果
- 为什么 du -sh 输出错误大小的内存映射文件
- VS2017 的输出错误,但 mingw 有效
- 如何使FFMPEG C 代码不输出错误消息
- 乘以时输出错误.这是我编译器中的错误吗?C
- 输出错误:两个不同编译器上的不同输出:Prime Cryptarithm USACO
- 为什么输出错误崩溃
- C++输入/输出错误
- 尝试用 c++ 制作一个简单的加法器.编译成功,但输出错误
- 当我使用此合并排序代码运行时,输出错误
- 递归功能输出错误的值