首页 > 试题广场 >

bit count

[编程题]bit count
  • 热度指数:7105 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
输入一个long类型的数值, 求该数值的二进制表示中的1的个数 .


输入描述:
long 类型的数值


输出描述:
该数值二进制表示中1的个数
示例1

输入

3

输出

2

说明

3的二进制表示: 11, 所以1个数为2
示例2

输入

65

输出

2

说明

65的二进制为:1000001,所以1的个数为:2
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        long n = sc.nextLong();
        int ans = 0;
        while (n != 0){
            ans += (n & 1);
            n >>>= 1;
        }
        System.out.println(ans);
    }
}

发表于 2020-05-13 10:34:19 回复(0)
//把一个整数减去1,再和原整数做与运算,会把该整数最右边一个1变成0.那么一个整数的二进制有多少个1,就可以进行多少次这样的操作。

import java.util.Scanner; 
 
public class Main{
    public static void main(String[] args){
    	Scanner sca = new Scanner(System.in);
    	long n = sca.nextLong();
    	int count = 0;
    	while(n!=0) {
    		count++;
    		n = n & (n-1);
    	}
    	System.out.println(count);
    }
}

发表于 2020-04-02 16:29:09 回复(0)
Java实现,已通过。用位运算(n-1)&n,直到运算结果为0,运算次数即“1”的个数。运行时间:58ms,占用内存:10952k。代码如下:
import java.util.*;  
public class Main {
      public static void main(String[] argus)
      {
          Scanner scanner=new Scanner(System.in);
          while(scanner.hasNextLong())
          {
              long number=scanner.nextLong();
              System.out.println(NumberOf1(number));  
          }
          
          
      }
        public static int NumberOf1(long n) {
int time=0;
while (true) {
     if(n==0) break;
    time++;
   n = (n - 1) & n;
   
}
            return time;
            
        }
    }



发表于 2019-12-23 13:39:28 回复(0)
import java.util.Scanner;

/**
 * @Author: Lee
 * @Date: 2019/8/8 23:42
 * @Description:
 */
public class Main {

	public static void main(String[] args) {
		new Main().process();
	}

	public void process() {
		Scanner input = new Scanner(System.in);
		long source = input.nextLong();
		ten2TwoProcess(source);
	}

	public void ten2TwoProcess(long source) {
		int num = 0;
		
		String string = Long.toBinaryString(source);
		char[] chars = string.toCharArray();
		for (int i = 0; i < chars.length; i++) {
			if (chars[i] == '1') {
				num++;
			}
		}
		System.out.println(num);

	}

}

编辑于 2019-08-08 23:53:21 回复(0)