华为机试-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