方法一:使用二进制基本计算,统计余数为0即可
import java.util.*; public class Main{ public static void main(String [] args){ getNumber(); } public static void getNumber(){ Scanner scan = new Scanner(System.in); int input = scan.nextInt(); int remainder = 0; int flag = 0; while(input>0){ remainder = input%2; if(1 == remainder){ flag++; } input = input/2; } System.out.print(flag); } }
方法二:直接使用位移操作,除以二即将所有位向右移动一位,高位补0
import java.util.*; public class Main{ public static void main(String [] args){ getNumber(); } public static void getNumber(){ Scanner scan = new Scanner(System.in); int input = scan.nextInt(); int remainder = 0; int flag = 0; while(input>0){ remainder = input%2; if(1 == remainder){ flag++; } input = input>>1; } System.out.print(flag); } }