巧匠十进制转换成二进制,并输出二进制按位取反和逆序


#include<stdio.h>
int  main()
{    
	int b[16]; 
    int a[16];
	int number=100;//数的范围0—2^16-1,这里以100为例
	int i,j,k=0,n=0;
	do
{
    i=number%2;
    number=number/2;
    b[k++]=i;
    a[n++]=(i^1);

}while(number);
   printf("十进制数转成二进制数:       ");
   for(j=k-1;j>=0;j--)
   {
	   if(j!=0)
	   {
		   printf("%d",b[j]);
       }
		   else 
		   {
			   printf("%d\n",b[j]);
		   }
   }
     printf("十进制数的二进制数按位取反: ");
     for(j=n-1;j>=0;j--)
	 {
		 if(j!=0)
	 {
		 printf("%d",a[j]);
	 }
        else 
		{
	      printf("%d\n",a[j]);
		}
	 }
      printf("十进制数的二进制数倒序输出: ");
      for(j=0;j<=k-1;j++)
{
		  if(j!=k-1)
		  {
			  printf("%d",b[j]);
		  } 
		    else
			{
	         printf("%d\n",b[j]);
			}
}
return 0;

}

#include<stdio.h>
void conver_bin(int x)//利用递归实现一个十进制转换为二进制输出
{
   if((x/2)!=0)
   {
       conver_bin(x/2);
	   printf("%d",x%2);
   }
  else
  {
    printf("%d",x);
  }

}
int main()
{

conver_bin(123);
printf("\n");
return 0;

}

#include<stdio.h>

void change2(int n)//递归转化为二进制
{
  if(1==n)
  {
     printf("%d",n);
  }
   else
   {
     change2(n/2);  //如果将这两个语句顺序颠倒就会相反输出
	 printf("%d",n%2);//2改成8或者16可以实现其它进制的转换
   }
   
}

int main()
{
  change2(16);
  printf("\n");
  return 0;

}

十进制转化为二进制和八进制

#include<stdio.h>

void Change_Num_B(int num)//递归转化为二进制
{
  if(1==num)
  {
     printf("%d",num);
  }
   else
   {
     Change_Num_B(num/2);  
	 printf("%d",num%2);
   }
    
}
void Change_Num_O(int num)//递归转化为二进制
{
  if(1==num)
  {
     printf("%d",num);
  }
   else
   {
     Change_Num_O(num/8);  
	 printf("%d",num%8);
   }
   
}

void print_sys(int a,int n)
{
if(a==0)
	   printf("error!!!");
   if(a==2)
  Change_Num_B(n);
    if(a==8)
  Change_Num_O(n);


}
int main()
{
	int n=0,a=0;
  printf("please input number:");
  scanf("%d",&n);
  printf("\n");
   printf("please input number which is you want chang to that system:(2,or,8)");
  scanf("%d",&a);
  printf("\n");
   print_sys( a,n);
  return 0;

}




待优化》》》》》》》》》》》

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值