题解 | 二进制位中1的数量

二进制位中1的数量

https://www.nowcoder.com/practice/3e392d0ed7e543f3a4ae883d1470ca9d

import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.StreamTokenizer;

public class Main {

	private static BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
//	private static StreamTokenizer st = new StreamTokenizer(reader);
	private static PrintWriter writer = new PrintWriter(new BufferedOutputStream(System.out));

	private static long n;

	public static void main(String[] args) throws IOException {

		n = Long.parseLong(reader.readLine());
		writer.println(getBitCount2(n));

		writer.flush();
		writer.close();
		reader.close();
	}

	private static int getBitCount1(long x) {
		int cnt = 0;
		while (x != 0) {
			if ((x & 1) == 1) {
				cnt++;
			}
			x >>>= 1;
		}
		return cnt;
	}

	private static int getBitCount2(long x) {
		int cnt = 0;
		while (x != 0) {
			x = (x & (x - 1));
			cnt++;
		}
		return cnt;
	}

}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务