代码工作正常的一些值,如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;
}
2条答案
按热度按时间idv4meu81#
更改ans的数据类型。
a2mppw5e2#
在尝试运行代码后,它工作了。51正确地显示为110011,50显示为110010,20显示为10100。这些是正确的位值,您可以尝试通过计数或以不同的方式添加10(即1010)来计算它们。