获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
获取二进制数的每一位时,使用右移(>>)与(&)1的方法,因为1与(&)0或1时都能获得0和1本身
比如一个32位的二进制数,获取第一位,则让该数右移(>>)31位后再与(&)1,则得到该位上的数字
#include<stdio.h>
#include<stdlib.h>
int main(){
int a =0;
int i=0;
int tmp=0;
printf("请输入一个数");
scanf_s("%d", &a);
printf("奇数位为:");
for (i = 31; i >= 0; i =i-2){//我们所要获得的是奇数位,所以循环变量在自减的时候要减2
tmp = (a >> i) & 1;
printf("%d ",i, tmp);
}
printf("\n");
printf("偶数位为:");
for (i = 30; i >= 0; i=i - 2){//同上
tmp = (a >> i) & 1;
printf("%d ",i, tmp);
}
printf("\n");
system("pause");
return 0;
}
检测结果如下: