输出的c++ bitset问题

标签 c++ binary bitset

我正在研究 bitset,所以我想知道将 base-10 转换为 base-2 的最佳方法是什么,因为出于某种原因我得到了错误的答案: 给出数字 19,我希望看到: 10011(16-2-1),为什么会输出(00011)

#include <iostream>
#include <bitset>

using namespace std;

int main() {

    bitset<sizeof(int)> temp(19);
    for (int x = 4; x>=0;x--) 
        cout << temp[x];
    cout << endl;
    system("pause");
    return 0;
}

最佳答案

sizeof 给出了 char 的数量,而不是 bit 的数量。 sizeof(int) 很可能是 4,因此 temp[4] 是 UB。 使用 bitset<sizeof(int)*CHAR_BIT> .

关于输出的c++ bitset问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6245047/

相关文章:

c++ - 尝试将字符串数组转换为 int 但在 C++ 中不起作用

c - 在 Bitset 中设置单个位会导致设置多个位

Python:在整数的二进制表示中查找最长的二进制间隙

java - 我需要删除零,java

java - 在 Java 中实现 C 风格的位域

c++ - 如何以循环方式迭代 std::bitset 并返回下一个 'true' 位的索引?

c++ - 从 for 循环到另一个循环的变量

c++ - 给出错误答案的简单 C++ 代码

c++ - 永远不会调用 Asio 异步处理程序,不会调用其他处理程序

c - 为什么我们将 (temp>>11) 乘以 2 来找到此代码中的第二个