0

我正在使用此示例代码来帮助我完成十进制到二进制数的转换:http ://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=13734&lngWId= 3 从十进制转换为二进制.

我成功地尝试了较小的数字。但是当我添加一个数字时,例如:2159492075 或 2159492195。程序只输出0. 此外,我尝试了一个相同大小的数字,例如 1234567899 或 2134567899,我得到了数字的正确二进制表示。我想知道这是为什么?

最初我认为这可能是因为将变量定义为 long int:

long int dec,k=0,i=0,j=0,n,remainder,result[100];

但在进一步挖掘时,我认为这不是问题。有人可以建议我可能做错了什么吗?

4

1 回答 1

4

尝试使用long longtype 代替。您的问题可能不超过溢出。

void convert(long long n, int arr[100], int & i)
{
   i = 0;
   do
   {
       arr[i++] = n % 2;
       n /= 2;
   } while (n);
   for (int j = 0; j <= i / 2; ++j) swap(arr[j], arr[i - j - 1]);
}

用法:

int sz, my_arr[100];
convert(2013, my_arr, sz);
for (int i = 0; i < sz; ++i) cout << my_arr[i];
cout << endl;
于 2013-01-16T21:22:26.383 回答