判断二进制数中1的个数
法1:最优解:
每一个二进制-1以后,从右往下左第一个1的后面的数都会变为1,然后与原二进制数与以后后面就都会变为0,能这样操作几次就代表有几个1
1100-1=1011
public int NumberOf1(int n) { int count = 0; while(n!= 0){ count++; n = n & (n - 1); }
法2:
private static int NumberOf1_low(int n) { int count = 0; int flag = 1; while (flag != 0) { if ((n & flag) != 0) { count++; } flag = flag << 1; } return count; }
本文来自博客园,作者:LeeJuly,转载请注明原文链接:https://www.cnblogs.com/peterleee/p/11206248.html