您的位置:首页 > 编程语言 > C语言/C++

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

2017-08-07 10:06 183 查看
今天来说说另外一个位运算的运用:输出二进制序列中所有偶数位和奇数位。

 

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

 

#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;
}
(绿色部分为修改的)

 

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



若大家有疑惑或者更好的想法,欢迎在下方留言交流喔!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐