欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-07-14 23:41:37
...

【问题描述】:获取一个数二进制序列中所有的偶数位和奇数位,分别输出其奇数和偶数的二进制序列。
                       例如:30的二进制序列0000 0000 0000 0000 0000 0000 0001 1110
                       偶数序列为:0000 0000 0000 0011
                       奇数序列为:0000 0000 0000 0110
【解题思路】:要得到偶数序列,先将每个偶数位移到最后一位,然后按位与1,就得到了这一位;要得到奇数序列,先将每个奇数位移到最后一位,然后按位与1,就得到了这一位。
                      一个数按位与1,结果为0,那个数就是0;结果为1,那个数就是1。
【参考代码】:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main()
{
 int num = 0;
 printf("请输入一个整数:");
 scanf("%d", &num);
 int i = 0;
 printf("偶数序列为:");
 for (i = 31; i >= 1; i -= 2)
 {
  printf("%d ", ((num >> i) & 1));
 }
 //最高的偶数位向右移动31位到最后一位,最低偶数位向右移动1位到最后一位
 printf("\n");
 printf("奇数序列为:");
 for (i = 30; i >= 0; i -= 2)
 {
  printf("%d ", ((num >> i) & 1));
 }
 //最高的奇数位向右移动30位到最后一位,最低奇数数位向右移动0位到最后一位
 printf("\n");
 system("pause");
 return 0;
}