输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数。

import java.util.Scanner;
public class y {
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  Scanner in=new Scanner(System.in);
  while(in.hasNextLine()){
   int n=in.nextInt();
   int count=0;
    String s=Integer. toBinaryString(n) ;
   for (int i = 0; i     if(s.charAt(i)=='1')
     count++; 

   }
   System.out.println(count);
  }
 }
}
注意: Integer. toBinaryString(n) ;函数的使用!

另一种方法:
数字在内存中 ,被转化为二进制。
例如7表示为0111
n&(n-1) 即(0111)&(0110)== 0110 就是 n去除了最后一个1 ;
几个1 就可以在几次内 去除几个1
while(m!=0){
           count++;
            m=m&(m-1);
        }//求m中1的个数
另:
while(n>0){
if(n&1>0){
c++;
}
n>>1;
}

你可能感兴趣的:(华为编程题练习,java)