云天河 统计二进制数中有多少个1 2025-05-26 暂无评论 该算法是由**Brian Kernighan**发明的: ```cpp int count_ones(int x) { int count = 0; while (x) { // 魔法步骤!每次去掉最右边的1 x &= (x - 1); count++; } return count; } ``` #### 算法原理 每次执行 x &= (x - 1) 的操作,都会将 x 的二进制表示中最右边的 1 变为 0。 Brian Kernighan 算法通过消除最右侧的1逐步统计二进制中1的数量,无需逐位遍历,是高效统计二进制特征的基础技巧。 评论已关闭 Copyright @云天河 搜索 分类 C/C++ 标签 算法 文章目录
评论已关闭