c++ - 如何在位集中存储更大的二进制数 (C++)

标签 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 个二进制数字。我怎么能有这么大的数字?

最佳答案

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/

相关文章:

c++ - 使用 QAbstractItemModel 将 2D C++ 游戏板暴露给 QML

c++ - 在 C++ 中返回位集 vector

c++ - 位集超过 32 位?

algorithm - 如何实现位向量(bitset)(Java)?

C++ 垃圾收集、模板和运算符覆盖 - 无法理解为什么会抛出错误

c++11 - 让 result_of、decltype、std::function 和可变参数模板一起工作

c++ - 在 PowerShell 中运行 C++ exe 文件

C++设计查询

c++ - 将位集保存到结构字段中

java - java中BitSet的nextClearBit()实际上是如何工作的?