算法基础练习-_03 1的个数
2021-03-02 16:28
标签:tag exti can 算法基础 oid 位运算 next 练习 out 算法基础练习-_03 1的个数 标签:tag exti can 算法基础 oid 位运算 next 练习 out 原文地址:https://www.cnblogs.com/btlord/p/14404282.html请实现一一个函数,输入一个整数,输出该数二进制表示中1的个数。
例: 9的二进制表示为1001,有2位是1
import java.util.Scanner;
public class _03_1的个数 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
System.out.println(Integer.toString(N, 2));
int count = 0;
//比对每一位,使比对的1向左移动
for (int i = 0; i >> i) & 1) == 1)
count++;
}
System.out.println(count);
//强大的解题方法,每次-1 and & 一次,就会消除1个二进制1
count = 0;
while (N != 0) {
N = ((N - 1) & N);
count++;
}
System.out.println(count);
}
}
要点解析:
1. Integer.toString(N, 2) 将N转换为2进制
2.
N = ((N - 1) & N); 将会消除从低位到高位的二进制1
Tags:位运算
2021年2月15日