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

题目描述

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

输入描述:

 输入一个整数(int类型)

输出描述:

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

输入例子:
5
输出例子:
2
 1 import java.util.*;
 2 
 3 public class Main{
 4     public static void main(String[] args){
 5         Scanner sc=new Scanner(System.in);
 6         while(sc.hasNext()){
 7             int n=sc.nextInt();
 8             String s=Integer.toBinaryString(n);
 9             
10             int count=0;
11             for(int i=0;i<s.length();i++){
12                 if(s.charAt(i)=='1'){
13                     count++;
14                 }
15             }
16             System.out.println(count);
17         }
18     }
19 }
数字在内存中 ,被转化为二进制。
例如7表示为0111
n&(n-1) 即(0111)&(0110)== 0110 就是 n去除了最后一个1 ;
几个1 就可以在几次内 去除几个1;
 
n&1如果是1,则计数++,然后n右移1位
 1 import java.util.* 2 public class Main{    
 3     public static void main(String[] args){        
 4         Scanner scan = new Scanner(System.in);        
 5         int n = scan.nextInt();        
 6         int count = 0;        
 7         while(n>0){            
 8             if((n&1)>0){                
 9                 count++;            
10             }            
11             n=n>>1;        
12         }        
13         System.out.println(count);    
14     }
15 }

 

posted @ 2017-04-07 11:33  临江仙zhe  阅读(109)  评论(0)    收藏  举报