首先,介绍十进制转二进制的方法:
十进制整数转换为二进制整数十进制整数转换为二进制整数采用”除2取余,逆序排列”法。具体做法是:用2整除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为小于1时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。
所以,十进制转为二进制的代码如下:
#include<stdio.h>
void main()
{
int x,m,n,i;
int a[16]={0};//定义数组并赋值
printf("请输入一个十进制的数:");
scanf("%d",&m);//
printf("将%d转化为二进制:\n",m);
for(i=0;i<16;i++)//对i循环16次
{
x=m%2;//m对2取余得到的值赋值给x
n=m/2;//m整除2的值赋值给n
m=n;//n的值再赋值给m以进行下一轮
a[i]=x;//将取余的值赋给数组a
}
for( i=15;i>=0;i--)//让取余后的值从右往左依次输出
{
printf("%d",a[i]);
if(i%4==0)//让每四个数一组依次输出,一个空格为距离
{
printf(" ");
}
}
}
十进制的数用八进制来表示,我们可以用 八余法来写:
#include<stdio.h>
int main()
{
int x,m,n,i;
int a[8]={0};
printf("请输入一个十进制的数:");
scanf("%d",&m);
printf("将%d转化为一个八进制:\n",m);
for(i=0;i<8;i++)
{
x=m%8;
n=m/8;
m=n;
a[i]=x;
}
for(i=0;i<8;i++)
{
printf("%d*8的%d次方+",a[i],i);
//if("i%4==0");
//{
printf(" ");
//}
}
}
得到如下结果: