首页 > 试题广场 >

求int型正整数在内存中存储时1的个数

[编程题]求int型正整数在内存中存储时1的个数
  • 热度指数:377179 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
输入一个 int 型的正整数,计算出该 int 型数据在内存中存储时 1 的个数。

数据范围:保证在 32 位整型数字范围内

输入描述:

 输入一个整数(int类型)



输出描述:

 这个数转换成2进制后,输出1的个数

示例1

输入

5

输出

2
示例2

输入

0

输出

0
import java.util.Scanner;
import java.util.Stack;


public class ShuZiDianDao {

public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
while(sc.hasNextInt()){
String s=Integer.toBinaryString(sc.nextInt()).toString();
int num=0;
for(int i=0;i<s.length();i++){
if(s.charAt(i)=='1'){
num++;
}
}
System.out.println(num);
}
}

}

发表于 2016-02-26 13:00:02 回复(1)
import java.util.*;

public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();
        int count = 0;
        //把向右移位得到的二进制与1操作
        for (int i = 31; i >=0 ; i--) {
            if ((num>>>i&1) == 1){
                count ++;
            }
        }
        System.out.println(count);
    }
}

发表于 2022-06-11 17:51:38 回复(1)
n = int(input())
a = bin(n)
b = str(a)
print(b.count('1'))

发表于 2022-04-06 14:59:07 回复(2)
#include<iostream>
using namespace std;
int main()
{
    int n;
    cin>>n;
    int num=0;
    while(n!=0)
    {
        if(n%2==1) {num++;}
        n=n>>1;//右移一位
    }
    cout<<num;
}

发表于 2022-03-06 20:00:29 回复(0)
#include<bits/stdc++.h>
using namespace std;
int main(){
    int cnt = 0;
    int n;
    cin>>n;
    while(n){
        if(n & 1) cnt++;
        n >>= 1;
    }
    cout<<cnt;
    return 0;
}

发表于 2022-02-07 23:32:02 回复(0)

print(str(bin(int(input()))).count("1"))

发表于 2020-02-15 23:33:43 回复(0)
#include<iostream>
using namespace std;

//方法一
/*int main()
{
    int n;
    cin>>n;
    int count=0;
    while(n)
    {
        if(n%2) count++;
        n/=2;
    }
    cout<<count<<endl;
    return 0;
}*/

//方法二
int main()
{
    int n;
    cin>>n;
    int count=0;
    while(n)
    {
        count++;
        n=n&(n-1);
    }
    cout<<count<<endl;
    return 0;
}

发表于 2019-07-31 09:38:56 回复(1)
#include<iostream>
using namespace std;
int main()
{
    int n;
    while(cin>>n)
    {
        int count=0;
        while(n)
        {
           if(n&1==1)
           {
              ++count;
           }
            n=n>>1;
        }
        cout<<count<<endl;
    }
    return 0;
}
发表于 2017-08-23 17:06:34 回复(0)
num=int(raw_input(""))
num=str(bin(num))
len1=len(num)
count=0
for i in range(2,len1):
    if num[i]=='1':
        count+=1
print count
下面是C++实现的代码
#include<iostream>
using namespace std; int main() { int num = 0; cin >> num; int count = 0; while (num) { count++; num = num&(num - 1); } cout << count << endl; system("pause"); return 0; }

编辑于 2016-07-04 20:57:55 回复(0)
import java.util.Scanner;
//求int型正整数在内存中存储时1的个数
//一个数对2取余为1时,其二进制表达式最后一位为1,
//迭代右移一位来依次判断该数二进制表达式中每一位是否为1,
//直至数值为0则表明所有位已经判断完毕
//无符号右移运算符:>>>
public class Main{
    public static void main(String[] args){
        Scanner in=new Scanner(System.in);
        int b=in.nextInt();
        int result=0;   //1的个数
        while(b>0){
            if(1==b%2)
            result++;
            b=b>>>1;
        }
        System.out.println(result);
    }
}
发表于 2021-12-15 00:07:49 回复(0)
#include <iostream>
using namespace std;

int main ()
{
    int a;
    int b;
    int count,i;
    cin>>a;
    for(i=a;i>1;i=i/2)
    {
        b=i%2;
        if(b==1)
            count++;
    }
    cout<<count+1<<endl;
}
发表于 2021-07-16 10:33:34 回复(0)
# 输入
num = int(input())
# 1的个数,初始化为0
count1 = 0
# 遍历num装换为二进制后的字符串
for i in str(bin(num)):
    # 若字符为1则加1
    if i == '1':
        count1 += 1
# 打印二进制中1的个数
print(count1)
发表于 2019-11-30 20:48:35 回复(1)
print bin(int(raw_input())).count('1')  
发表于 2016-10-19 15:11:07 回复(1)
#include<iostream>
using namespace std;

int main(){
    int n;
    cin>>n;
    int count=0;
    while(n){
        n=n&(n-1);
        count++;
    }
    cout<<count<<endl;
    return 0;
}

发表于 2016-04-04 18:56:05 回复(0)
n = int(input())
num_1 = 0
while n :
    if n%2:
        num_1 += 1
    n = n // 2
print(num_1)

发表于 2022-07-19 18:49:07 回复(0)
#include<bits/stdc++.h>
using namespace std;

int main()
{    
    unsigned int data;
    cin >> data;
    
    int count = 0;
    int temp;
    while(data)
    {
        temp = data%2;
        data /= 2;
        if(temp == 1)
            count++;
        
    }
    cout << count << endl;
    
    return 0;
}

发表于 2022-07-05 16:30:35 回复(0)
s=int(input())

ss=bin(s)

print(ss.count("1"))
#十进制int(x,16),十六进制hex(),二进制bin(),八进制oct()
发表于 2022-05-18 13:12:17 回复(0)
console.log(Number(readline()).toString(2).replace(/0/g,'').length)
发表于 2022-04-17 12:54:00 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int a = in.nextInt();
        int count = 0;
        while(a != 0) {
        int res = a % 2;
        a = (a - res) / 2;
            count += res;
        }
        System.out.println(count);
    }
}
发表于 2022-03-24 19:32:08 回复(0)
print(str(bin(int(input()))[2:]).count('1'))
发表于 2022-03-10 20:21:08 回复(0)