首先理解题目,一个整数有32个比特位,所以应该打印16个奇数位和16个偶数位,比如12的二进制表示为:
00000000000000000000000000001100
我们就要打印一行偶数出来:
0000000000000010
还有一行奇数:
0000000000000010
然后,想要打印二进制中的数,就可以利用该数按位与(&)1,这样就能打印出二进制中的最后一位。
只能打印最后一位肯定不行,这时候我们就可以利用到移位操作符,一个接着一个打印出来。
好!理论成立,开始实现代码:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);//输入一个整数
int i = 0;
printf("偶数位: \n");
for (i = 31; i >= 1; i -= 2)//一步一步一位打印偶数位
{
printf("%d ", (n >> i) & 1);
}
printf("\n");
printf("奇数位: \n");
for (i = 30; i >= 0; i -= 2)//一步一步一位打印奇数位
{
printf("%d ", (n << i) & 1);
}
return 0;
}