java问题,不懂,求大神指教,问题如下:

17.(循环,操作符)**一个int类型的整数由32个二进制位组成,每个二进
制位的值要么为0要么为1。要求读入一个int类型的整数n,计算它的32个二
进制位中总共有多少位为1?
(java编程,没有思路)

提示:

①十进制转二进制的算法,除以2取其余数,即为2进制数的当前数位。(这个算法如果不懂,我就帮不了你了)

——图摘自百度图片


②循环求对应数码,并统计,当除以2得余数1的次数ans


import java.util.Scanner;


public class Test {

    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);

        int num = scan.nextInt();

        int ans = 0;

        while(num>0) {

            if(num%2 == 1) {

                ans++;

            }

            num /= 2;

        }

        System.out.print(ans);

    }

}

温馨提示:答案为网友推荐,仅供参考