求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 }

浙公网安备 33010602011771号