我使用此示例代码帮助我完成十进制到二进制数转换: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];
但是在进一步挖掘方面,我不认为这是一个问题。有人会建议我做错了什么吗?
答案 0 :(得分:4)
请尝试使用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;