1
解题思路:
对于给定的数n,使用位运算:n=n&(n-1)可计算出对应二进制中1的个数,为count1。将input=n,input=input>>1逐个获取input中1的个数,为count2,如果input&1==1,则此时对应位上为0,记数t加1操作,当count1=count2时,循环终止,此时可获得t,即为0个个数,具体实现看下面代码。
代码如下:
public class number_ofZero_bits { public static void main(String[] args) { Scanner sc=new Scanner(System.in); while (sc.hasNext()) { int input=sc.nextInt(); if (input<0) { return; } int count1=0,count=0,t=0; int n=input; while (n!=0) { n=n&(n-1); count++; } while (input!=0) { if ((input&1)==1) { count1++; if (count1==count) { break; } } else { t++; } input=input>>1; } System.out.println(t); } sc.close(); } }
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/zzc8265020/article/details/46923997