版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/melody_1016/article/details/83271331
题目:获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
思路:利用“按位与”运算,将num32位中的的每一个二进制(由低位到高位)位取下来,存放到数组中(注意,这里依次取下每一位与数组下标正好是反着的,即a[0]存放的是第32位,a[31]存放的是第1位)
代码:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
void GetNum(unsigned int value)
{
int arr[32];
for (int i = 0; i < 32; i++)//由低位到高位不断取下每一个位的值,存入数组中
{
arr[i] = value & 1;
value = value >> 1;
}
//输出偶数位
printf("偶数位为:");
for (int i = 31; i>0; i-=2)
{
printf("%d ", arr[i]);
}
printf("\n");
//输出奇数位
printf("奇数位为:");
for (int i = 30; i>=0; i -= 2)
{
printf("%d ", arr[i]);
}
}
int main()
{
int num = 0;
printf("请输入数字:");
scanf("%d", &num);
GetNum(num);
system("pause");
return 0;
}
运行结果: