c++ - 从十进制变为二进制

标签 c++

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

关于c++ - 从十进制变为二进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14368023/

相关文章:

c++ - 发送 std::endl 到流给出内存地址

c++ - strtok 字符串并修改 token 值

c++ - 在这种特殊情况下,为什么不需要将 std::hash() 的特化注入(inject)到 std namespace 中?

C++ 模板化函数调用托管函数

c++ - OpenCV:快速量化两幅图像之间的差异

c++ - Protobuf ld undefined symbol ~InternalMetadata()

c++ - 2 插槽系统上的 OpenMP

c++ - 如何在 C++14 中衰减右值引用类型,同时保留左值引用?

c++ - 如何设置一个元表以从另一个元表继承,同时将用户数据更改为另一种类型?

c++ - 为什么数组元素长度的地址计算可以被 2 的幂整除更有效?