将十进制数按位转换为二进制数

bitwise conversion of decimal numbers to binary

该代码对于某些值工作正常,例如 10,输出是 1010,这是正确的,但对于 20、50 或 51,输出是错误的,或者至少在我看来是这样。 请帮忙!

 #include <iostream>
    #include <math.h>
    using namespace std;

int main()
{

    int n;

    cin >> n;

    int ans = 0;

    int i = 0;

    while (n != 0)
    {

        int bit = n & 1;

        ans = (bit * pow(10, i)) + ans;

        n = n >> 1;

        i++;
    }

    cout << " Answer is " << ans << endl;
}

尝试 运行 您的代码后,它起作用了。 51 正确显示为 110011,50 正确显示为 110010,20 正确显示为 10100。这些是正确的位值,您可以尝试通过计数或以不同方式仅添加 10(即 1010)来计算它们。