常用的位运算替换操作

最近在学习算法,发现大佬写的代码中凡是涉及到位运算的,我都一脸懵逼,所以我就找了一些常见的位运算替换操作。

至于为什么用位运算呢?因为位运算可以直接对二进制进行操作,不仅可以节约内存,还可以使程序运行速度更快。

其实就是为了简化代码,提高效率,简化计算

下面就是一些常见操作:

i / 2

i >> 1

i * 2

i << 1

i / 2 ^ k
i 除以(2的k次方)

i >> k

i * 2 ^ k

i 乘以(2的k次方)

i << k

i % 2(判断奇偶)

i & 1

i&(i-1)

(清除i的二进制表示中最后一个1)

i &= (i - 1)

i |= (i + 1)


将 i 的最低位(即二进制表示中最右边的一位)设为 1

i^=j; j^=i; i^=j;

交换i和j的值,无需使用额外的变量

(x >> i & 1) == 0 ? y : z

如果x的二进制表示的第i位是0,返回y,否则返回z

n & ( n - 1)

判断 n 是不是 2 的幂,结果为0,表示true

n >> (k - 1) & 1

取整数n的二进制表示中第k位的值

还有一个是在for循环中,判断条件是i>=0的话,可以使用~i表示,但可能会出现一些错误

若发现错误,请指出,谢谢

PS:这些位运算替换操作可以更高效地实现一些功能,提高程序效率。但需要注意的是,在某些情况下,位运算可能会导致代码可读性降低,而且需要小心处理位运算的溢出情况。

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值