求int型数据在内存中存储时1的个数

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

输入:一个整数(int类型)

输出:这个数转换成2进制后,输出1的个数

样例输入:5

样例输出:2

 1 import java.util.Scanner;
 2 
 3 public class Main {
 4     public static void main(String[] args){
 5         Scanner sc = new Scanner(System.in);
 6         int n = sc.nextInt();
 7         int count = 0;
 8             while(n!=0){
 9             n = n&(n-1);10             count++;//按位与操作
11             }
12         System.out.println(count);
13     } 
14 }
数字在内存中 ,被转化为二进制。
例如7表示为0111
n&(n-1) 即(0111)&(0110)== 0110 就是 n去除了最后一个1 ;
几个1 就可以在几次内去除几个1;
 

 输入整数一定要考虑正负0的情况。

posted @ 2016-08-18 16:07  蛋蛋的守护  阅读(889)  评论(0)    收藏  举报