c++ 十进制数到二进制数的逐位转换

nbysray5  于 2023-01-03  发布在  其他
关注(0)|答案(2)|浏览(202)

代码工作正常的一些值,如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;
}
idv4meu8

idv4meu81#

更改ans的数据类型。

float ans = 0;
a2mppw5e

a2mppw5e2#

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

相关问题