获取一个数二进制序列中所有的 偶数位 和 奇数位,分别输出二进制序列。
#include<stdio.h>
#include<stdlib.h>
int main(){
int n = 2019;
int sum1 = 0; int sum2 = 0;
int len1 = 0; int len2 = 0;
int i;
int count = 1;
for (i = n; i; i >>= 1){
if (count % 2){ //奇数 //位运算:(count&1=1)是奇数,(count&1=0)是偶数;
//一般运算:(count%2=1)是奇数,(ount&2=0)是偶数
sum1 |= (i & 1) << len1; //sum1是把i中最后一位(i&1)取出,放到sum1的最后一位,并len1++
len1++; //依次取出i中的奇数位并向左移动len1位;再对sum1进行‘或’运算
}
else{ //偶数
sum2 |= (i & 1) << len2;
len2++;
}
count++;
}
printf("奇数位:");
for (i = len1-1; i >= 0; i--){
printf("%d", sum1 >> i & 1); // >>的优先级高 打印出sum1,先把sum1左移len1-1位,
} //打印sum1的最高位,依次从左往右打印
putchar('\n');
printf("奇数位:");
for (i = len2-1; i >= 0; i--){
printf("%d", sum2 >> i & 1);
}
putchar('\n');
system("pause");
return 0;
}
运行结果: