快速求使用二进制表示整数中1的个数
如何快速求一个整数使用二进制表示时1的个数?
这里给出一个很简单的方法,首先看代码:
public int findBin1Count(int n) {
int res = 0;
while (n != 0) {
if ((n & 1) == 1) res++;
n >>= 1;
}
return res;
}
其实这就是逐位判断法:
-
将整数与1进行
按位与
操作,如果所得结果为1,那就说明该整数的最低位为1
,如果结果为0
,那就说明该整数的最低位为0, -
然后将整数无符号右移(逻辑右移)1位,继续和1进行
逻辑与
运算,直到该整数变为0为止。
这里举个例子,如十进制整数13,使用二进制表示为1101,分别和1进行逻辑与运算并右移:
- 1101 & 0001 = 1
- 1101 >> 1 = 110
- 110 & 001 = 0
- 110 >> 1 = 11
- 11 & 01 = 1
- 11 >> 1 = 1
- 1 & 1 = 1
- 1 >> 1 = 0(十进制为0结束)
因此最终结果为3
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
2024-02-19 3-Redis十大关系之列表List
2024-02-19 2-Redis十大类型之字符串String
2024-02-19 1-redis中key常见的操作命令
2023-02-19 LinkedList