Brains


Algorithm、Machine Learning、Search、cloud computing
on Algorithm, 求比特位中1的数目

计算一个数字中 1的个数 的算法

本文主要收集了一些很nice的方法,用来计算一个数,其二进制形式中1的位数。 简介 李明老师的C语言中级课程中,讲解了这一算法,无奈记性不好。。为了以后能时常看到,现记录下来。 简单相与法 比如一个二进制数0b 1111 1111 = 0xFF,只需要: 1、与0b 0000 0001 = 0x01相与,如果为真,则个数加1; 2、与0b 0000 0010 = 0x02相与,如果为真,则个数加1; .... .... n、如果这个数是16位的,必须相与到0xFFFF才能结束 核心代码如下: ... ... for( i = 0; i 1 * 2 ^ i { count++; } } ... ... 与相邻数相与法 注意这种情况:一个数与这个数减1相与,会把这个数的最后面的一位1变为0.如下情况: 0b 1000 & 0b
Read More