求二进制中1的个数
需知:二进制中,1的二进制是1,与1相与等于袁术,与0相与为0
思路:有三种方法,向左移动1来和目标值进行相与,无符号向右移动目标值来和1相与,最后一种是最常用的方法就是通过减一操作来和自身相与,每次能够除去最低位
public static void main(String[] args) { // 二进制中1的个数 // 左移1 Scanner s = new Scanner(System.in); int a = s.nextInt(); System.out.println(Integer.toString(a,2)); int count = 0; for (int i = 0;i<32;i++){ if( (a & (1<<i)) == (1<<i)){ count++; } } System.out.println(count); // 右移 int num = 0; for (int i =0;i<32;i++){ if(((a>>>i)&1) == 1){ num++; } } System.out.println(num); // 通过逐渐减一操作来进行运算 int N = 0; while(a!=0){ a = (a-1)&a; N++; } System.out.println(N); }
同理 求一个数是否是二的次方,可以通过第三种方法减一操作来进行位移动,最后判断1的个数为1个即可解答