方法1: 判断这个是是不是奇数,如果是,计数+1,再把这个数右移1位。 循环的执行次数等于这个二进制数的长度。 long num1 = 259l; int n1 = 0; while (num1>0) { n1 += num1&1; num1>>=1; } 方法二: num&(num-1)和num相比,1的个数会少一个,再把num&(num-1)重新赋值给num,1的个数等于重新赋值的次数。 long num2 = 259l; int n2 = 0; int count2 = 0; do { count2++; n2++; } while ((num2 = (num2 & (num2-1))) > 0);
求一个正整数的二进制数中1的个数
最新推荐文章于 2021-08-01 20:45:54 发布