当输入 5 到 7 之间时,它不起作用,但当输入高于 7 时,它可以正常工作。
#include<iostream>
#include<math.h>
using namespace std;
int main()
{ int n;
cout <<"Decimal : ";
cin>>n;
int ans = 0;
int i=0;
while(n != 0)
{
int bit = n % 2;
ans = (bit * pow(10,i)) + ans;
n = n / 2;
i++;
}
cout << "Binary : "<< ans;
}
您无法将二进制数以 10 为基数存储在大于
1111111111
的 32 位整数中。 (11亿)
假设您有一个 7 位数字,例如:9999999。用二进制表示,则为:
100110001001011001111111
。但如果您将其解释为十进制,则无法将该值分配给 32 位整数。它甚至也不适合 64 位整数。
使用字符串而不是尝试进行指数数学。
std::string ans;
while (n != 0)
{
int bit = n % 2;
if (bit == 1)
{
ans += "1";
}
else
{
ans += "0";
}
n = n / 2;
}
if (ans.size() == 0) // handle the zero case
{
ans = "0";
}
cout << "Binary : "<< ans;