牛客华为算法-HJ15 求int型正整数在内存中存储时1的个数

我爱海鲸 2025-04-18 23:52:00 暂无标签

简介华为OD、冒泡排序

求int型正整数在内存中存储时1的个数_牛客题霸_牛客网

描述

对于给定的 int 型的十进制正整数 n ,统计其在内存中存储时 1 的个数。换句话说,即统计其二进制表示中 1 的个数。

输入描述:

在一行上输入一个整数 n(0≦n<231) ,代表给定的数字。

输出描述:

在一行上输出一个整数,代表 n 的二进制表示中 1 的个数。
解法一(java):
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int num = in.nextInt();
        int result = 0;
        int carray = 1;
        while (num != 0) {
            if ((num & carray) == 1) {
                result++;
            }
            num = num >> 1;
        }
        System.out.println(result);
    }
}

思路:使用一个循环,让它和1进行与运算,要是结果为1就表示,最后一位是1,结果+1,然后再将输入的数往右移一位(就表示去掉了最后一位),循环直到输入的数为0为止。

你好:我的2025