从十进制转换为二进制

Changing from decimal to binary

本文关键字:二进制 转换 十进制      更新时间:2023-10-16

我使用这个示例代码来帮助我完成十进制到二进制的数字转换: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];

但深入研究,我认为这不是一个问题。谁能告诉我哪里做错了吗?

尝试使用long long类型代替。您的问题可能不只是溢出。

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;