华为机试-062-简单-HJ62.查找输入整数二进制中1的个数


一、描述

输入一个正整数,计算它在二进制下的1的个数。
注意多组输入输出!!!!!!
在这里插入图片描述

1.1、输入描述

输入一个整数

1.2、输出描述

计算整数二进制中1的个数

二、示例

2.1、示例1

输入:

5

输出:

2

说明:
5的二进制表示是101,有2个1

2.2、示例2

输入:

0

输出:

0

三、答案(java)

3.1、方法一

package com.tzq.hwod;

import java.util.Scanner;

//注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		// 注意 hasNext 和 hasNextLine 的区别
		while (in.hasNextInt()) { // 注意 while 处理多个 case
			int a = in.nextInt();
			String b = Integer.toBinaryString(a);
			String c = b.replaceAll("1", "");
			System.out.println(b.length() - c.length());
		}
	}
}

在这里插入图片描述

四、答案(python 3)

4.1、方法一

位运算基础案例,二进制位运算符 a >> n 等同于 a // 2^n , 反之 a << n 等同于 a * 2^n,即为在二进制末尾补零。
‘与’运算 a & b:二者的二进制表示中的相同位置处都为1时运算后的数为1,如
7 => 111, 2 => 10,二者倒数第二个位置都为1,其他位置都不满足条件为0,因此 7 & 2 = ‘010’ = 2,同理求 某一整数n的二进制表达中有几个1,可用 n & 1 来计算,每运算更新一次, 对 n >>= 1 位运算处理,效果为消去二进制表示中的最后一位,如 7 >> 1 = 3 的过程为 111 --> 11,也等同于 7 // 2 = 3。

#!/usr/bin/python
# -*- coding: UTF-8 -*-

while True:
    try:
        n = int(input())
        count = 0
        while n:
            count += (n & 1)
            n >>= 1
        print(count)
    except:
        break

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Tzq@2018

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值