算法提炼--位运算(2)

简介: 算法提炼--位运算(2)

求二进制中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个即可解答

相关文章
|
7月前
|
算法
算法思想总结:位运算
算法思想总结:位运算
|
7月前
|
机器学习/深度学习 存储 算法
【算法基础】常数操作 时间复杂度 选择排序 冒泡排序 插入排序 位运算
【算法基础】常数操作 时间复杂度 选择排序 冒泡排序 插入排序 位运算
|
算法
基础算法:位运算
基础算法:位运算
55 0
|
4月前
|
算法
【算法】位运算算法——消失的两个数字(困难)
【算法】位运算算法——消失的两个数字(困难)
|
4月前
|
算法
【算法】位运算算法——只出现一次的数字Ⅱ
【算法】位运算算法——只出现一次的数字Ⅱ
|
4月前
|
算法
【算法】位运算算法——判断字符是否唯一
【算法】位运算算法——判断字符是否唯一
|
4月前
|
算法
【算法】位运算算法——两整数之和
【算法】位运算算法——两整数之和
|
4月前
|
算法
【算法】位运算算法——丢失的数字
【算法】位运算算法——丢失的数字
|
4月前
|
算法
算法】位运算——常见位运算基础操作总结
算法】位运算——常见位运算基础操作总结
算法】位运算——常见位运算基础操作总结
|
6月前
|
存储 自然语言处理 算法
位运算入门及简单算法题的应用
位运算入门及简单算法题的应用
48 1