C语言位运算运用二:输出二进制序列中所有的偶数位和奇数位

来源:互联网 发布:福建随行软件操作手册 编辑:程序博客网 时间:2024/05/16 13:46

今天来说说另外一个位运算的运用:输出二进制序列中所有偶数位和奇数位。

 

如果对上一篇博客内容深刻了解了的话,这一个题目应该不会有太大的难度,所以闲话少说,直接上程序:

 

#include<stdio.h>

#include<stdlib.h>

int main()

{

    int num = 0;

    int i = 0;

    printf("请输入一个整数:");

    scanf("%d",&num);

    printf("这个数的二进制序列中奇数位为:\n");

    for(i=0;i<32;i+=2)

    {

        printf("%d ",(num>>i)&1);

    }

    printf("\n");

    printf("这个数的二进制序列中偶数位为:\n");

    for(i=1;i<32;i+=2)

    {

        printf("%d ",(num>>i)&1);

    }

    printf("\n");

    system("pause");

    return 0;

}

 

拿13的二进制序列为例子,13的二进制序列为0000 0000 0000 0000 0000 0000 0000 1101,因此输出应该为1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0和0 1 0 0 0 0 00 0 0 0 0 0 0 0 0,我们来运行一下程序验证一下:

 

程序是输出了理想的结果,不过却不够完美……因为这是倒序输出,如果想正序输出,则要对两个循环做一下修改:

#include<stdio.h>

#include<stdlib.h>

int main()

{

    int num = 0;

    int i = 0;

    printf("请输入一个整数:");

    scanf("%d",&num);

    printf("这个数的二进制序列中奇数位为:\n");

    for(i=1;i<32;i+=2)

    {

        printf("%d ",(num>>(31-i))&1);

    }

    printf("\n");

    printf("这个数的二进制序列中偶数位为:\n");

    for(i=0;i<32;i+=2)

    {

        printf("%d ",(num>>(31-i))&1);

    }

    printf("\n");

    system("pause");

    return 0;

}

(绿色部分为修改的)

 

现在我们来看看输出结果:



若大家有疑惑或者更好的想法,欢迎在下方留言交流喔!

阅读全文
0 0
原创粉丝点击