常用位运算

位运算常见操作

判断奇偶

  • (x & 1) == 1 == x % 2 == 1判断奇数
  • (x & 1) == 0 == x % 2 == 0判断偶数

位运算除法

x / 2 == x >> 1

>>> 为无符号右移,高位补0。>>为有符号右移,正数高位补0,负数高位补1。

获取二进制最右边的 1 :x & (-x)

  • 求补码的方式:按位取反加1

-x = \lnot x + 1

  • 取完补码之后,可以看出,结果是最右边的 1 不动,然后其他所有位都按位取反。
  • 要清楚,计算机计算负数的时候,会求其补码,正数的补码是自己本身,负数的补码就是上面的求法,这样互为相反数的两个补码进行 &,就会得到最后一位 1 ,其前面和后面的1都会被过滤掉,后面的0会保留,形成新的二进制数。

将二进制最右边的 1 去掉: x & (x - 1)

  • 首先要了解 x - 1会发生什么,从二进制的角度,这会影响最后的1以后的数位,前面不会影响。然后 -1 之后,最右边的 1 变成 0,后面的0都会变成 1。
  • 然后 &操作,结果上就是把 最右边的 1 去掉。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

相关阅读更多精彩内容

友情链接更多精彩内容