C语言 求一个整数存储在内存中的二进制中 1 的个数
2021/7/12 7:09:22
本文主要是介绍C语言 求一个整数存储在内存中的二进制中 1 的个数,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录(涉及知识点)
方法一:先取模,再进行除运算
算数操作符
方法二:与运算、右移、for循环、if判断
位操作符
移位操作符
方法三:whlie循环、与运算 ——最高效的
方法一:先取模,再进行除运算
#include<stdio.h> int main() { int num = 0; scanf("%d", &num); int count = 0; while(num) { if(num % 2 == 1) count++; num = num /2; } printf("二进制中1的个数为:%d\n", count); return 0; }
算数操作符
/ ,只要有double浮点数时,printf用%lf,(默认6位
% ,操作数必须都是整数
方法二:与运算、右移、for循环、if判断
#include<stdio.h> int main() { int num = 0; int count = 0; scanf("%d",&num); int i ; for(i = 0; i <32; i++) { if(1==((num >> i) & 1)) count++; } printf("二进制中1的个数为:%d\n",count); return 0; }
位操作符
- & 按 二进制 位与 。 两个同时为1,才是1。有0全是0
- | 按 二进制 位或 。 两个同时为0,才是0,有1全是1
- ^ 按 二进制 位异或。 两个相同为0,相异为1
移位操作符
1.操作数只能是整数
2.移动的是二进制位
>>:右移操作符 。包括 算术右移与逻辑右移
算术右移:是符号位要一起移动,并且在左边补上符号位
逻辑右移:是将二进制数整体右移,左边补0即可
<<:左移操作符 。左边丢弃,右边补零
Int a=-1
Int b=a>>1
b还是是-1
源码:符号位 (正0负1
反码:符号位不变,其余与源码相反
补码:反码末位+1
方法三:whlie循环、与运算
特点:循环直到num为0,循环多少次,就有多少个1,不用再用 if判断
#include<stdio.h> int main() { int num = 0; scanf("%d", &num); int count = 0; while (num) { num = num & (num - 1); count++; } printf("二进制中1的个数为:%d\n", count); return 0; }
这篇关于C语言 求一个整数存储在内存中的二进制中 1 的个数的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-23DevExpress 怎么实现右键菜单(Context Menu)显示中文?-icode9专业技术文章分享
- 2024-12-22怎么通过控制台去看我的页面渲染的内容在哪个文件中呢-icode9专业技术文章分享
- 2024-12-22el-tabs 组件只被引用了一次,但有时会渲染两次是什么原因?-icode9专业技术文章分享
- 2024-12-22wordpress有哪些好的安全插件?-icode9专业技术文章分享
- 2024-12-22wordpress如何查看系统有哪些cron任务?-icode9专业技术文章分享
- 2024-12-21Svg Sprite Icon教程:轻松入门与应用指南
- 2024-12-20Excel数据导出实战:新手必学的简单教程
- 2024-12-20RBAC的权限实战:新手入门教程
- 2024-12-20Svg Sprite Icon实战:从入门到上手的全面指南
- 2024-12-20LCD1602显示模块详解