0
点赞
收藏
分享

微信扫一扫

「算法」常见位运算总结

西风白羽 03-02 06:30 阅读 5
算法

位运算符

  • 异或
    按位异或可以实现无进位相加,所谓无进位相加,就是在不考虑进位的情况下将两个数相加(后面有道题需要用到这种操作)
    在这里插入图片描述

异或的运算律
①a ^ 0 = a
②a ^ a = 0
③a ^ b ^ c = a ^ ( b ^ c )

  • 有符号右移>>
    将一个数的所有位向右移动指定的位数,最高位用符号位填充
  • 无符号右移>>>
    也是右移,不过最高位用0填充

基操

背景:给一个数 n,我们设它二进制表示的最低位的下标是 0

  • 确定 n 二进制表示的第 x 位是0还是1
    将 n 右移 x 位,然后和 1 按位与,若为 0,则第 x 位为0;反之为 1

  • 将 n 的第 x 位修改成 1
    将 1 左移 x 位,然后和 n 按位或

  • 将 n 的第 x 位修改成 0
    将 1 左移 x 位,然后和 n 按位异或

lowbit:提取一个数二进制中最右侧的1

这是一个很巧妙的操作,本质是将最右侧的 1 左边的区域全变成相反
操作:n ^ (-n)

去除最右侧的1

操作:n & ( n - 1 )
本质:将最右侧的1右侧的区域(包括1)全部变成相反

举报

相关推荐

0 条评论