C++ 如何计算c+中的二进制位+;?

C++ 如何计算c+中的二进制位+;?,c++,bit-manipulation,C++,Bit Manipulation,对于64位平台上的数字0:位为 00000000000000000000000000000000000000 对于64位平台上的20000000000数字:位为 011011111 00110101 10010100 00000000 以下是我目前的代码: #include<iostream> #include<limit.h> const int BIT = CHAR_BIT * CHAR_BIT; // CHAR_BIT states the architecture

对于64位平台上的数字0:位为

00000000000000000000000000000000000000

对于64位平台上的20000000000数字:位为

011011111 00110101 10010100 00000000

以下是我目前的代码:

#include<iostream>
#include<limit.h>
const int BIT = CHAR_BIT * CHAR_BIT; // CHAR_BIT states the architecture of platform    
                                     // 8 byte(64 bit) 4 byte(32 bit)
int main()
{
    char* bit = new char[BIT + 1];
    int i;
    for ( i = 0; i < BIT + 1; i++)
        bit[i] = '0';
    unsigned int x;
    cout << "Enter number";
    cin >> x;

    if (x == /* some value */)
    {
        // then calculate which zero's should turn to one as per number
        // or how can i do this using loops
    }
    bit[i] = '\0';


    // displays bit in a specific format
    for (i = 0; i < BIT; i++)
    {
        if ((i % 8) == 0)
        cout << " ";
        cout << bit[i];
    }
}
#包括
#包括
常量int位=字符位*字符位;//CHAR_BIT说明了平台的体系结构
//8字节(64位)4字节(32位)
int main()
{
字符*位=新字符[位+1];
int i;
对于(i=0;ix;
如果(x=/*某个值*/)
{
//然后根据数字计算哪个零应该变成一
//或者我如何使用循环来实现这一点
}
位[i]='\0';
//以特定格式显示位
对于(i=0;i
while(x!=0)
{

std::我想,你应该阅读有关位操作的内容,你的问题是什么?制作一个由64个字符组成的字符串,并将所有字符设置为零,然后计算哪个字符应该变为1。如果我的数字是10,那么63和61应该变为1。在这种情况下,你想将数字转换为字符串需要一些编辑,但有了一个想法,谢谢…谢谢辅导的
while (x != 0)
{
    std::cout << (x % 2);
    x /= 2;
}