为什么不支持 5 到 7 个输入? C++ 中的十进制到二进制转换[重复]

问题描述 投票:0回答:1

当输入 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; 
}

输出: Decimal to Binary conversion in c++

c++ binary decimal decimalformat
1个回答
0
投票

您无法将二进制数以 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;     
© www.soinside.com 2019 - 2024. All rights reserved.