美文网首页
位运算-lowbit

位运算-lowbit

作者: n_xy | 来源:发表于2021-05-30 12:28 被阅读0次

lowbit概念

  任意一个整数可被表达成二进制如: (6)10 =(110)2
  那么定义一个函数f=lowbit(x),表示这个数的二进制表示中最低位的1所对应的值,lowbit(6)=2
  所以所以假设一个数的二进制最低位的1在从右往左数的第k位,那么它的lowbit值就是:2k-1

lowbit 实现方式

  1. x&(x^(x-1))
  2. x&-x

解释:
  我们得到lowbit的值,只需要得到最后一个1的位置,并且把除了这个位置之外的所有位置全部置成零。然后输出就可以。
  看看x&(x^(x-1)),拿6来举例:
<center> (6)10 -1=(101)2 </center>
  对一个二进制数进行减1,那么会出现从这个这个数的最后一个1开始到最后的所有数都取反,即构成一个01111⋯的串。
  把这个数与原数异或,就会造成:第一个1以后的数(包括第一个1)全部取1.其他的位全部取0.即构成一个由一堆0后面跟一堆1的串。
  那么再把原式做一个与运算,那么除了原来的那个1(对应位都是1)为1,其他位全是0,完成任务。

  然后x&-x
根据补码性质,可以理解跟上边原理是一样的。

相关文章

  • 位运算-lowbit

    lowbit概念   任意一个整数可被表达成二进制如: (6)10 =(110)2   那么定义一个函数f=l...

  • BIT(数状数组)

    lowbit运算 lowbit(x)=x&(-x),从二进制的角度解读就是取(0000001101001100)2...

  • lowbit与运算

    定义: 求数字x的二进制表达式中最低位的1所对应的值。 计算: 返回值均不带符号;如果x为奇数则返回为1;如果x为...

  • lowbit操作 -- Java版

    算法思路 (lowbit) O(nlogn)使用lowbit操作,进行,每次lowbit操作截取一个数字最后一个1...

  • 11.位运算

    原题链接 给定一个长度为n的数列,请你求出数列中每个数的二进制表示中1的个数。 lowbit运算:原码与补码相与 ...

  • 3、小众运算符の大课堂(一)

    较为简单の位运算符: & 位与运算| 位或运算^ 位异或运算~ 位取反运算 举例: 要做位运算,首先要把数据转...

  • Chapter8——基础算法——树状数组

    1. lowbit运算 就是取x的二进制最右边的1和它右边所有的0组成的二进制数。 2. 树状数组 应用于区间求和...

  • 位运算及其应用

    内容概要: 位运算基本操作 基于位运算的状态压缩 位运算经典应用 位运算解N皇后问题 位运算 符号描述规则&与1&...

  • 位运算及用位运算实现权限控制

    请自行补习位运算相关知识 位运算 位运算示例 权限控制

  • 开发基础随笔之位运算符(Bitwise Operators)

    位运算符,属于算术运算符 按位逻辑运算符: 位移运算符: 位运算符的运算数只能是整数 位移运算符:按位左移 a<<...

网友评论

      本文标题:位运算-lowbit

      本文链接:https://www.haomeiwen.com/subject/shipsltx.html