题目:
获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列
=========================================================================
思路:
总体思路:
(一). 输入数据
(二). 打印奇数位:
使用 for循环 循环产生 1~32 之间的偶数,
使用 移位操作符 移动偶数位,移动后就是奇数位,
这时再 按位与1 取出当前位,
进行打印。打印完奇数后进行 换行
(三). 打印偶数位:
使用 for循环 循环产生 1~32 之间的奇数,
使用 移位操作符 移动奇数位,移动后就是偶数位,
这时再 按位与1 取出当前位,
进行打印。打印完奇数后进行 换行
第一步:
(1). 输入数据 -- scanf()函数
实现代码:
#include <stdio.h> int main() { //输入数据: int n = 0; scanf("%d", &n); return 0; }
实现图片:
第二步:
打印奇数位:
(1).使用 for循环 循环产生 1~32 之间的偶数,
(2).使用 移位操作符 移动偶数位,移动后就是奇数位,
这时再 按位与1 取出当前位,
(3).进行打印。打印完奇数后进行 换行
实现代码:
#include <stdio.h> int main() { //输入数据: int n = 0; scanf("%d", &n); //打印 奇数位 : printf("奇数位:"); //使用 for循环 循环产生 1~32 之间的偶数 int i = 0; for (i = 30; i >= 0; i -= 2) //循环产生的偶数位:30 28 26 ... { //使用 移位操作符 和 按位与 来取出当前位 并打印 printf("%d", (n >> i) & 1); //移位后就是奇数位,按位与1 取出最低位 } //换行 printf("\n"); return 0; }
实现图片:
第三步:
打印偶数位:
(1).使用 for循环 循环产生 1~32 之间的奇数,
(2).使用 移位操作符 移动奇数位,移动后就是偶数位,
这时再 按位与1 取出当前位,
实现代码:
#include <stdio.h> int main() { //输入数据: int n = 0; scanf("%d", &n); //打印 奇数位 : printf("奇数位:"); //使用 for循环 循环产生 1~32 之间的偶数 int i = 0; for (i = 30; i >= 0; i -= 2) //循环产生的偶数位:30 28 26 ... { //使用 移位操作符 和 按位与 来取出当前位 并打印 printf("%d", (n >> i) & 1); //移位后就是奇数位,按位与1 取出当前位 } //换行 printf("\n"); //打印 偶数位 : printf("偶数位:"); //使用 for循环 循环产生 1~32 之间的奇数 for (i = 31; i >= 1; i -= 2) //循环产生的奇数位:31 29 27 ... { //使用 移位操作符 和 按位与 来取出当前位 并打印 printf("%d", (n >> i) & 1); //移位后就是偶数位,按位与1 取出当前位 } return 0; }
实现图片:
最终代码和实现效果
最终代码:
#include <stdio.h> int main() { //输入数据: int n = 0; scanf("%d", &n); //打印 奇数位 : printf("奇数位:"); //使用 for循环 循环产生 1~32 之间的偶数 int i = 0; for (i = 30; i >= 0; i -= 2) //循环产生的偶数位:30 28 26 ... { //使用 移位操作符 和 按位与 来取出当前位 并打印 printf("%d", (n >> i) & 1); //移位后就是奇数位,按位与1 取出当前位 } //换行 printf("\n"); //打印 偶数位 : printf("偶数位:"); //使用 for循环 循环产生 1~32 之间的奇数 for (i = 31; i >= 1; i -= 2) //循环产生的奇数位:31 29 27 ... { //使用 移位操作符 和 按位与 来取出当前位 并打印 printf("%d", (n >> i) & 1); //移位后就是偶数位,按位与1 取出当前位 } return 0; }
实现效果: