<>题目

获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列

<>思路分析

打印一个整数的二进制位中的偶数位和奇数位,可以对整数进行移位操作,再将移位的二进制位与1进行&操作。二进制的序列在计算机的存储中有32位,故在不考虑负数的符号位的情况下,奇数位和偶数位分别有16个。对奇数和偶数分别进行讨论~~

<>代码实现

1.方法一 右移操作符实现
右移操作符,最高位是补符号位,但是此题不影响,因为循环里,每次都是判断的最低的那一位,在有些题中,右移操作符 一定要小心使用~一不小心就会出问题
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"); system("pause"); return 0; }
直接上图叭,就更清晰直观一些~~
偶数位和奇数位一样,就是循环变量 i 的变化不同,参考奇数位的解释即可~

2.方法二 左移操作符实现
int main() { int num = 0; printf("请输入一个数:"); scanf("%d", &num); printf("奇数位:");
for (int i = 31; i >= 1; i -= 2) { if (num & (1 << i)) { printf("%d ",1); } else
{ printf("%d ", 0); } } printf("\n"); printf("偶数位:"); for (int i = 30; i >= 0; i
-= 2) { if (num & (1 << i)) { printf("%d ", 1); } else { printf("%d ", 0); } }
printf("\n"); system("pause"); return 0; }

其实道理和右移操作符 方法都一样~ 只要理解左移操作符、右移操作符、按位与的原理就可以啦~

技术
©2019-2020 Toolsou All rights reserved,
css中上下左右居中的几种实现方法[CISCN 2019 初赛]Love Mathc/c++语言实现登陆界面Unity3D 人称设置(第一人称视角、第三人称视角)Fastadmin框架自定义搜索操作流程2021最新Python自动化软件测试笔试题(含答案)黑客帝国装逼的代码雨mysql数据库设置字符集配置修改my.ini文件(windows)python之panda模块1Python学习笔记:基础+进阶10道练习题