前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基础算法篇——位运算

基础算法篇——位运算

作者头像
秋落雨微凉
发布2022-11-16 14:08:36
2760
发布2022-11-16 14:08:36
举报
文章被收录于专栏:秋落雨微凉Java开发栏

基础算法篇——位运算

本次我们介绍基础算法中的位运算,我们会从下面几个角度来介绍:

  • 位运算常用公式
  • 二进制中1的个数

位运算常用公式

其实位运算的使用很常见但大多不难,经常都是套用公式

我们下面分别介绍两个公式:

  1. 求第n位数
代码语言:javascript
复制
// 求n的二进制的第k位数(将n向右移动k位,相当于将求解的位数放到个位,并且将其与1进行and运算)
n >> k & 1
  1. lowbit公式
代码语言:javascript
复制
// lowbit公式用来求该二进制的最后一位1的位置
lowbit(n) = n & -n;

// 其原理很简单,n是二进制数,-n是n取反,相当于-n和n的每一位都不相同
// 但是我们再加上1,就会导致n的最后一位1的位置变成了1.相当于所有位置的值都相反,但是只有最后一位1的位置都是1

二进制中1的个数

我们来简述一下题目:

  • 给定一个长度为n的数列,请你求出数列中每个数的二进制表示中1的个数。

我们直接给出解答代码:

代码语言:javascript
复制
package cn.itcast.jvm.t1.gen;

import java.util.Scanner;

public class Sum1 {
    public static void main(String[] args) {

        // 读取n个数

        Scanner scanner = new Scanner(System.in);

        int n = scanner.nextInt();

        while ( n-- > 0){

            // 读入数
            int x;
            x = scanner.nextInt();

            // 获得n后我们直接采用取n的最后一位1,并且将他减去并统计减去1的次数即可
            int res = 0;

            while (x > 0){
                x -= lowbit(x);
                res++;
            }

            System.out.println(res);
        }

    }

    // lowbit操作
    public static int lowbit(int x){
        return x & -x;
    }
}

结束语

好的,关于基础算法篇的位运算就介绍到这里,希望能为你带来帮助~

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-11-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 基础算法篇——位运算
    • 位运算常用公式
      • 二进制中1的个数
      • 结束语
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档