十进制转二进制

时间:2021-11-16 20:57:44
#include<stdio.h>
int dg(unsigned n,int c)//注意:参数类型是unsigned
{
if(n/2 != 0)
c=dg(n/2,c);
printf("%d",n%2);
if((c+1)%4 == 0)
printf(" ");
return ++c;
}
int main()
{
int i=0,c=0,a[sizeof(int)*8]={0};//数组全部初始化为0
printf("%d\n",sizeof(int));
unsigned temp,u;
temp=u=4294967295u;
int tu=(int)u;
printf("u=%u,tu=%d\n",u,tu);
//输出二进制形式
//方法一:位运算
//大端法机器写法如下:
/*while(i<sizeof(int)*8)
{
printf("%d",(u>>i)&1);
if((i+1)%4 == 0)
printf(" ");
i++;
}*/
//小端法机器写法如下:
while(i<sizeof(int)*8)
{
a[sizeof(int)*8-1-i]=(u>>i)&1;
i++;
}
for(i=0;i<sizeof(int)*8;i++)
{
printf("%d",a[i]);
if((i+1)%4 == 0)
printf(" ");
}
printf("\n");
//方法二:递归除2(此方法与机器无关)
dg(temp,c);
printf("\n");
return 0;
}