获取一个数二进制序列中所有的 偶数位 和 奇数位,分别输出二进制序列。

获取一个数二进制序列中所有的 偶数位 和 奇数位,分别输出二进制序列。

#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;
}

运行结果:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值