关于按位与&和逻辑右移>>
求一个数的二进制的时候,可以采用这种方法,向右移一位,相当于除以二,所以有以下代码:
#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(无符号型)。
时间: 2024-10-20 08:20:30