作业标题
打印整数二进制的奇数位和偶数位
作业内容
获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列
2.解题思路
首先我们需要输入数字,要创建一个scanf。然后要分奇偶,那么就要分别判断条件。
奇数位和偶数位有很多位,应该会用到循环。奇数和奇数,偶数和偶数里,相邻的差值为2,说明循环可能每次-2,然后进行位运算打印。
分别打印出二进制序列说明应该要用到位运算。
3.具体代码
#include <stdio.h>
int main() {
int num = 0;
printf("请输入一个数:");
scanf("%d", &num);
printf("偶数位:");
for (int i = 31; i >= 1; i -= 2) {
printf("%d ", (num >> i) & 1);
}
printf("\n");
printf("奇数位:");
for (int i = 30; i >= 0; i -= 2) {
printf("%d ", (num >> i) & 1);
}
printf("\n");
return 0;
}
打印:
4.代码讲解
这里我们重点讲一下两个for循环里面:
偶数:
-
for (int i = 31; i >= 1; i -= 2)
:一个从31开始递减到1的循环,步长为2,用于遍历偶数位。 -
printf("%d ", (num >> i) & 1);
:将num
右移i
位,然后与1进行按位与操作,结果为1表示该位是1,为0表示该位是0。然后打印出该位的值。
奇数:
-
for (int i = 30; i >= 0; i -= 2)
:一个从30开始递减到0的循环,步长为2,用于遍历奇数位。 -
printf("%d ", (num >> i) & 1);
:与之前类似,打印出奇数位的值。