本文共 672 字,大约阅读时间需要 2 分钟。
/** * 判断一个数中哟多少个1 * 使用移位,int为32位,通过移位判断 */public static int count1(int n){ int count = 0; int i = 0; do{ if((n&1) == 1){ count ++; } i ++; n >>= 1; }while (i<32); return count;}/** * 使用算法:如n=9 (二进制写法1001) ,则n-1=8 (二进制写法1000), * 1001 & 1000 后结果为1000,即去掉了最右端的1, * 1000 再& 0111 结果为0000,如此统计循环的次数即可 * @param n * @return */public static int countBits(int n) { int count = 0; while (n!=0){ n &= (n-1); count ++ ; } return count;}public static void main(String[] args) { int val = 58585858; System.out.println(val+"包含1的数量为:"+count1(val)); System.out.println(val+"包含1的数量为:"+countBits(val));}
转载地址:http://yhsvi.baihongyu.com/