关于按位与&和逻辑右移>>

求一个数的二进制的时候,可以采用这种方法,向右移一位,相当于除以二,所以有以下代码:

#include<stdio.h>
//求一个数的二进制 
int main() 
{ 
   char arr[32];
   int num=0;
   int i=0;
   printf("请输入一个数字:");
   scanf("%d",&num);
   for(i=0;i<32;i++)
   {
 	  arr[i]=(num>>i)&1; 		
   }
   for(;i;i--)
   {
 	  printf("%d",arr[i-1]);
   }  
   return 0;
}

当然还有除以二取余的办法:

#include<stdio.h>
#define n 32
//求一个数的二进制 
int main() 
{ 
 	unsigned int num = 0;
	int count = 0;
	int i;
	int arr[n];
	printf("请输入一个数字\n");	
	scanf("%d",&num);
	printf("%d的二进制数为:",num);	
	for (i=0;i<n;i++)
	{
		arr[i]=num%2;
		num=num/2;
	}	
	for (i=n;i;i--)
	{
		printf("%d",arr[i-1]);
	}
    return 0;
}


在这里要注意的是如果用第二种方法求二进制数时,在定义num时,一定要注意其类型,如果直接定义为int型,则缩小了可以求的数的范围,不能求负数,所以一定要定义成unsigned int(无符号型)。