首页 > 试题广场 >

【编程题】编写一个函数,求一个数的二进制表示中的1位的个数,

[问答题]
【编程题】编写一个函数,求一个数的二进制表示中的1位的个数,例如9的二进制表示为10011位的个数为2
public static int getNumber(int number){
        int count = 0;
        int remainder = 0;
        while(number != 0){
            remainder = number % 2;
            if(remainder == 1)
                count++;
            number = number / 2;
        }
        return count;
    }
发表于 2018-08-07 17:21:19 回复(0)
def f(n):
    res=0
    h=1
    while n:
        if h&n ==1:
            res+=1
        n>>=1
    return res
if __name__=='__main__':
    n=input()
    result=f(n)
    print(result)

发表于 2020-04-29 17:19:23 回复(0)
// 按照参考答案写的,促使了我去学习了一波位运算。感觉很高级。
public int count(int num) {
    int count = 0;
    
    while(num != 0) {
        // 进行按位与操作,此操作约定对应位均为 1 时,结果对应位就为 1
        //   1010
        // & 1101
        // = 1000
        if((num & 1) == 1) {
            count++;
        }
        // 右移位操作,这里是向右移动 1 位:1001 >> 1 = 100
        num = num >> 1;
    }
    return count;
}

编辑于 2018-07-30 21:28:14 回复(1)
package domain;  // 编写一个函数,求一个数的二进制表示中的1位的个数,例如9的二进制表示为1001,1位的个数为2。 public class CountOne { //设计一个方法 将10进制 转为 2 进制  public static StringBuilder getB(int num){
        StringBuilder sb = new StringBuilder();  int orginnum = num;  while(num != 0){ int yushu=num%2; // 每次除完之后的余数  sb.append(yushu);  num /= 2; // 每次除完之后的商  }
        sb.reverse();  return sb;  } // 设计一个方法 用来统计 StringBuilder 里面的1的个数  public static int getCount(int num){ int count = 0;  String res = String.valueOf(CountOne.getB(num));  for (char value : res.toCharArray()){ if (value == '1'){
                count++;  }
        } return count;  } public static void main(String[] args) {
        System.out.println(CountOne.getCount(9));  }
}
发表于 2022-09-27 17:00:17 回复(0)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int back_bit(int n)
{
	int count = 0;//创建一个计数器。
	while (n)//如果n不为零,则证明n中有1,进入循环。
	{
		n = n & (n - 1);//将n(二进制位中)中最右边的一个1去除。
		//eg.
		//n = 3 =>011(前面那些位都是0,对结果影响不大,就省略了。)
		//n -1 = 2 => 010
		//n = n & (n-1) = 010      count++ = 1;
		//n = 2 =>010
		//n - 1 = 1 => 001
		//n = n & (n-1) = 000      count++ = 2;
		count++;//去除之后,计数器加1,证明n(二进制位中)至少有一个1。
		//返回判断n是否等于0,不等于0则证明n中还有1(在二进制为中),继续循环。若n为0,则结束循环。
	}
	return count;//返回计数器中的值,即为1(在二进制为中)的个数。
}
int main()
{
	int n = 0;
	scanf("%d", &n);
	int i = back_bit(n);//计算1的个数的函数,其返回值就是1的个数。
	printf("二进位中1的个数是 %d\n", i);
		return 0;
}


发表于 2021-09-04 10:46:32 回复(0)
import java.util.Scanner;
public class CountOne {
    public static int countNum() {
        Scanner scanner = new Scanner(System.in);
        int num = 0;
        int count = 0;
        if (scanner.hasNextInt()) {
            num = scanner.nextInt();
            String str = Integer.toBinaryString(num);
            for (int i = 0; i < str.length(); i++) {
                int one = Integer.parseInt(str.substring(0 + i, i + 1));
                if (one == 1)
                    count++;
            }
        } else
            return count;
        return count;
    }
    public static void main(String[] args){
        System.out.println(countNum());
    }
}

发表于 2020-09-02 21:48:56 回复(0)
#include<iostream>
(720)#include<string>
#include<algorithm>
using namespace std;
int main()
{
	int n;
	cin >> n;
	//transform to B
	string str("");
	do
	{
		str += n % 2+'0';
		n = n / 2;
	} while (n != 0);

	reverse(str.begin(), str.end());
	cout << str;
	int count=0;
	for (int i = 0; i < str.size(); ++i)
	{
		if (str[i] == '1')count++;
	}
	cout << endl << count;
	return 0;
}

发表于 2020-04-19 00:27:30 回复(0)
#include<iostream>
using namespace std;

int main(){
    int num = 0 ;
    int count = 0 ;
    cin >> num ;
    while (num != 0 ){
        if(num&1 == 1){
            count++;
        }
        num = num >> 1;
    }
    cout << count;
    return 0;
}

发表于 2019-10-07 02:17:31 回复(0)
int conutInBinaery(int n)
{
    int count = 0;
    while (n)
    {
        int temp = n;
        temp = temp & 0x00000001;
        if (temp != 0) count++;
        n = n >> 1;
    }
    return count;
}

发表于 2019-08-26 10:24:22 回复(0)
a=input();
b=''
for i in range(a/2):
    if a>0:
        print a%2
        b=b+str(a%2)
        a=a/2
        i=i+1
result=b[::-1];
num=result.count("1")  
print result;
print num;
发表于 2019-08-25 16:32:37 回复(0)
import java.util.Scanner; public class XZ_0411_01 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int count=0; while(n>0){ if((n&1)==1) count++; n>>=1; } System.out.println(count); sc.close(); } }
发表于 2019-04-11 09:25:00 回复(0)
发表于 2019-03-13 09:30:23 回复(0)
package com.ht; import java.util.Scanner; public class Test { public static void main(String[] args) {
        System.out.println("请输入一个十进制数:");
        Scanner reader = new Scanner(System.in); int n = 0; int i = 0; int r = 0;
        n = reader.nextInt(); int[] a = new int[10]; do { if (n % 2 == 1) {
                r = 1;
            } else {
                r = 0;
            }
            a[i] = r;
            n = n / 2;
            i++;
        } while (n > 0); int count = 0; for (int j = i - 1; j >= 0; j--) { if (a[j] == 1) {
                count++;
            }
        }
        System.out.println(count);
    }}

发表于 2018-08-27 18:38:24 回复(0)
import java.util.Scanner; public class Main { public static void main(String []args){
        Scanner sc=new Scanner(System.in); int number=sc.nextInt(); int flag=1; int res=0; while (flag!=0){ if((number & flag)!=0){
                res++;
            }
            
            flag=flag<<1;
        }
        
        System.out.println(res);
    }
}

发表于 2018-08-08 11:52:24 回复(0)
public int test(int i) {  int length = Integer.toBinaryString(i).split("1").length;
    System.out.println(length);  return length;
}

发表于 2018-08-03 10:08:25 回复(1)
void fun(int val)
{
    unsigned int count = 0;
    cout << "val is" << val << endl;
    char str[33] = {0};
    _itoa_s(val, str,33, 2);
    for (auto i :str)
    {
        if ('1' == i)
        {
            count++;
        }
    }
    cout << str << endl;
    cout << "1 的个数为:" << count << endl;
}
int main()
{
    int val = 0;
    cin >> val;
    fun(val);
    return 0;
}

发表于 2018-07-28 15:25:58 回复(0)
public int count(int num){
    int c = num%2==0?0:1;
    while(num!=0) c+=(num>>1)&1;
    return c;
}

发表于 2018-07-24 23:37:58 回复(0)
publicclassSolution{
    publicintgetOne(intnum) {
        if(num == 0|| num == 1)
         returnnum;
        return(num & 1== 1) ? getOne(num >> 1) + 1: getOne(num >> 1);
    }
}

发表于 2018-07-20 14:58:41 回复(0)

public int getNumber(){



s 

发表于 2018-07-19 15:12:31 回复(1)