我试图制作一个程序将数字转换成二进制数。
代码:
#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位二进制数字。我怎么能有这么多数字?
答案 0 :(得分:4)
585 mod 256 = 73(假设CHAR_BIT为8)
基地2中的73 = 0b01001001
The program does print 01001001。
我没有看到有任何错误。
如果要存储整个a
范围,则应将bitset声明为
bitset<CHAR_BIT * sizeof(a)> n (a);
答案 1 :(得分:0)
bitset具有固定的位数。您指定bitset<CHAR_BIT>
- 在大多数系统上,CHAR_BIT为8,因此您将拥有一个8位的位集。当您尝试将更大的数字填入bitset时,最高有效位将被丢弃。
如果您事先知道必须处理的最大数字,则可以指定例如bitset<16>
或bitset<32>
。如果不这样做,则可能必须使用some other datatype。