首页 > 试题广场 >

查找输入整数二进制中1的个数

[编程题]查找输入整数二进制中1的个数
  • 热度指数:164002 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
\hspace{15pt}对于给定的整数 nm,分别求解他们在二进制表示下的 1 的个数。

输入描述:
\hspace{15pt}第一行输入一个整数 n\left(0 \leqq n \lt 2^{31}\right) 代表需要求解的第一个数字。
\hspace{15pt}第二行输入一个整数 m\left(0 \leqq m \lt 2^{31}\right) 代表需要求解的第二个数字。


输出描述:
\hspace{15pt}第一行输出一个整数,代表 n 在二进制表示下的 1 的个数。
\hspace{15pt}第二行输出一个整数,代表 m 在二进制表示下的 1 的个数。
示例1

输入

5
0

输出

2
0

说明

\hspace{15pt}十进制 05 的二进制表示如下:
\hspace{23pt}\bullet\,十进制 (0)_{10} 等于二进制 (0)_{2}
\hspace{23pt}\bullet\,十进制 (1)_{10} 等于二进制 (1)_{2}
\hspace{23pt}\bullet\,十进制 (2)_{10} 等于二进制 (10)_{2}
\hspace{23pt}\bullet\,十进制 (3)_{10} 等于二进制 (11)_{2}
\hspace{23pt}\bullet\,十进制 (4)_{10} 等于二进制 (100)_{2}
\hspace{23pt}\bullet\,十进制 (5)_{10} 等于二进制 (101)_{2}

备注:
\hspace{15pt}本题数据已进行规范,不再需要读入至文件结尾(2025/01/09)。
头像 牛客44738297号
发表于 2021-02-20 21:52:52
位运算基础案例,二进制位运算符 a >> n 等同于 a // 2^n , 反之 a << n 等同于 a * 2^n,即为在二进制末尾补零。‘与’运算 a & b:二者的二进制表示中的相同位置处都为1时运算后的数为1,如7 => 111, 2 => 10 展开全文
头像 牛客39157064号
发表于 2021-11-01 16:56:37
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main {   &nb 展开全文
头像 牛客464844775号
发表于 2021-11-30 14:39:32
while True:     try:         n = int(input())         print(bin(n).count('1'))     except: 展开全文
头像 小草dym
发表于 2021-10-15 19:44:40
import java.util.*; public class Main {     public static void main(String args[]) { 展开全文
头像 大大的糖果果
发表于 2022-04-13 22:59:19
众所周知 1 换算成二进制数是 0001 也就是只有第一位为1 那么任何数n跟1做与操作 n&1 如果该数的二进制数第一位为1则结果为1 如果其第一位不为1则结果为0. 举例: 5 & 1 101 & 001 = 001 4 & 1 100 & 001 = 0 展开全文
头像 小陆要懂云
发表于 2021-08-14 15:34:08
看到二进制就要想到bitset #include<bitset> #include<iostream> using namespace std; int main(){ int n; while(cin>>n){ bitset< 展开全文
头像 李宗仁
发表于 2020-12-28 18:33:58
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while (scan 展开全文
头像 冷酷的杀猪匠
发表于 2022-03-04 09:28:20
#include<stdio.h> int main(){ int number; while(scanf("%d", &number) !=EOF){ int count = 0; for(int i=0; i<31; i++){ if(n 展开全文
头像 番茄蛋
发表于 2022-03-06 00:49:41
#菜鸡不知道bin方法,这题直接模拟二进制过程了,不断对n除2然后累加1,由于二进制第一位如果是0就省略的特性,所以第一位永远是1,count从1加起。 while True:     try:     &nb 展开全文
头像 生白
发表于 2021-01-01 18:14:00
输入一个正整数,计算它在二进制下的1的个数。注意多组输入输出!!!!!!基本上都是比较简单的基础题,这里的话考察的是位与以及右移的用法,暂时想到的就是这么去做了。#include<stdio.h>int main(){ int n; while(scanf("%d",& 展开全文