大家好,我是你们的晴天学长,在计算机二进制的位运算中,有两个比较重要的部分,异或和按位与,虽然出现率不高,但是能在代码运行速度上有着不下的提升,需要的小伙伴请自取哦!💪💪💪
1 ).二进制中1的个数
2 ) . 代码示例
import java.util.Scanner;
public class 二进制中的1的数量位运算 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int ans = Integer.bitCount(n);//直接计算该数二进制中1的数量
System.out.println(ans);
//方法2位运算
// while (n > 0) {
//按位与 $ 两个为1才为1,其他都是0
// if ((n & 1) == 1) ans++;
// n >>= 1;
// }
//方法3按位与的技巧
// while (n > 0) {
// n = n & (n - 1);
// ans++;
// }
}
}
3 ) . 总结
- Integer.bitCount(n)是可以直接计算一个十进制的数转化为二进制的时候1的数量。
- 按位与 $ 两个为1才为1,其他都是0(比较的是同一位,比如11和1,比较的就是11的个位的1和1)