如何在bitset中存储更大的二进制数(C ++)

时间:2010-09-01 14:38:48

标签: c++ bitset

我试图制作一个程序将数字转换成二进制数。

代码:

    #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位二进制数字。我怎么能有这么多数字?

2 个答案:

答案 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