首先是十进制转换成二进制,进制转二进制,基数就是2,用2整除一个十进制正整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数;如此进行,直到商为0;然后把先得到的余数作为二进制数的低位有效位,把后得到的余数作为二级制的高位有效位,依次排列起来。所谓有效位,就是不算前导0;
代码如下:
```#include<iostream>
using namespace std;
int main()
{
int i, j;//定义循环变量;
int a[1005];//定义一个储存二进制的数组;
int num;
cin >> num;//输入需要转换的10进制正整数;
for (i = 0; num != 0; i++)
{
a[i] = num % 2;//对num取余.......就是除以2的余数;
num = num / 2;//......每次取余之后num除以2的商;
}
for (j = i - 1; j >= 0; j--)//倒序输出余数,即为二进制数;
{
cout << a[j];
}
cout << "\n";//输出结果就是10010110
return 0;
}
``` js
如果想要换成其他进制,把除以2改为相应的数,例如想要改为十六就把2改为16 代码如下:
#include<iostream>
using namespace std;
int main()
{
int i, j;//定义循环变量;
int a[1005];//定义一个储存二进制的数组;
int num;
cin >> num;//输入需要转换的10进制正整数;
for (i = 0; num != 0; i++)
{
a[i] = num % 16;//对num取余.......就是除以16的余数;
num = num / 16;//......每次取余之后num除以16的商;
}
for (j = i - 1; j >= 0; j--)//倒序输出余数,即为十六进制数;
{
cout << a[j];
}
cout << "\n";
return 0;
}