算法提炼--位运算(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个即可解答

相关文章
|
1月前
|
算法
算法思想总结:位运算
算法思想总结:位运算
|
1月前
|
机器学习/深度学习 存储 算法
【算法基础】常数操作 时间复杂度 选择排序 冒泡排序 插入排序 位运算
【算法基础】常数操作 时间复杂度 选择排序 冒泡排序 插入排序 位运算
|
8月前
|
算法
基础算法:位运算
基础算法:位运算
29 0
|
2天前
|
存储 自然语言处理 算法
位运算入门及简单算法题的应用
位运算入门及简单算法题的应用
10 1
|
2天前
|
算法 Java
Java数据结构与算法:位运算之位移操作
Java数据结构与算法:位运算之位移操作
|
2天前
|
算法 Java
Java数据结构与算法:位运算之与、或、异或运算
Java数据结构与算法:位运算之与、或、异或运算
|
1月前
|
存储 算法 C++
算法:位运算
算法:位运算
22 2
|
1月前
|
算法 C++
c++算法学习笔记 (10) 位运算
c++算法学习笔记 (10) 位运算
|
1月前
|
存储 机器学习/深度学习 人工智能
【算法基础】基础算法(三)--(双指针算法、位运算、离散化、区间合并)
【算法基础】基础算法(三)--(双指针算法、位运算、离散化、区间合并)
|
1月前
|
算法 测试技术 C++
【位运算】【二分查找】【C++算法】100160价值和小于等于 K 的最大数字
【位运算】【二分查找】【C++算法】100160价值和小于等于 K 的最大数字