C++实现进制转换
十进制与二进制之间的转换方法,其他进制转换和其思路一致,只需更改几个参数
首先介绍十进制变为二进制的转换方法
常用方法:用2整除的方式。
用2整除十进制整数,得到一个商和余数;再用2去除商,又会得到一个商和余数,如此重复,直到商为小于1时为止,然后把先得到余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,以此排列起来。
注1:当一个整数除另一个整数得到整数商而没有余数时,叫做整除。如2除6得3,就说2能整除6或6能被2整除。
注2:除以是被除数在前,除数在后;除是除数在前,被除数在后。如32÷8=4可描述为:8除32等于4,或者32除以8等于4。
以十进制100转换为二进制为例:
100/2=50余0;50/2=25余0;25/2=12余1;12/2=6余0;6/2=3余0;3/2=1余1。以此排列十进制的100转换成二进制是:1100100。计算结果如下:
#include<iostream>
using namespace std;
int a[32]={0};//固定字长为32位,其余位置用0填充
void ten_into_two(int n) //对于其他 K进制数,只需要将函数中2换成K并且注意余数处理即可
{
int i=31;
while(n>=1)
{
if(n%2==1)
a[i--]=1;
else
i--;
n=n/2;
}
for(int i=0;i<32;i++)//输出十进制数n对应的二进制数
cout<<a[i]<<" ";
}
int main()
{
int n;
cin>>n;
ten_into_two(n);
}
二进制变为十进制的转换方法
方法很简单,就是将二进制数n的第i(i>0)位上的数(0或1)乘以2的i-1次幂。
void two_into_ten(int n) //n为2进制数
{
int sum=0,i=1,j;//j表示二进制数n第i位的值
while(n>0)
{
j=n%10;//获取第i位的值
sum=sum+j*pow(2,i-1);
i++;//变更下一位
n=n/10;
}
cout<<sum;
}
至于其他的十进制与K进制的转换关系,可以参考上述代码和思路,修改对应参数,即可实现。N进制与K进制的转换关系,用十进制作为桥梁即可实现。