我正在尝试编写一个程序将数字转换为二进制。
代码:
#include<iostream>
#include<algorithm>
#include<bitset>
using namespace std;
int main()
{
int a;
string k;
bitset<CHAR_BIT> n;
cin>>a;
n=bitset<CHAR_BIT>(a);
cout<<n<<" ";
return 0;
}
程序给出了 585 的错误答案,因为它包含超过 6 个二进制数字。我怎么能有这么大的数字?
最佳答案
585 mod 256 = 73(假设 CHAR_BIT 为 8)
基数 2 中的 73 = 0b01001001
The program does print 01001001 .
我看不出有什么问题。
如果要存储a
的整个范围,bitset应该声明为
bitset<CHAR_BIT * sizeof(a)> n (a);
关于c++ - 如何在位集中存储更大的二进制数 (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3619226/