位运算基础与技巧

位运算

标志 ↓=意义
a & b 按位与
`a b`
a ^ b 按位异或
~x 按位取反
! a 非运算
a >> x 右移运算
a << x 左移运算

位运算常用技巧

操作 表示
(x)(i) 位取反 x ^= (1 << i)
(x)(i) 位制成 1 ` x
(x)(i) 位制成 (0) x &= -1 ^ (1 << i)x &= ~(1 << i)
(x)(2) 取模的结果 x & 1
(x) 的第 (i) 位是否为 x & (1 << i)(x >> i) & 1
(x) 的最后一位 x & -x
(x) 的绝对值 (x ^ (x >> 31) ) - (x >> 31)(int 型)
判断 (x) 是否不为 (2) 的整次方幂 x & (x - 1)
判断 (a) 是否不等于 (b) a != ba - ba ^ b
判断 x 是否不等于 −1 x != -1x ^ -1x + 1~x

负数表示

用补码来表示负数

(∵−1=0−1)
  (0=000⋯00)
  (1=000⋯01)
(∴−1=111⋯11)

同理:
(−2=111⋯110)
(−3=111⋯101)
(−4=111⋯100)
(...)

于是有 -x = ~x + 1

参考来源:
https://www.acwing.com/blog/content/2415/
https://www.cnblogs.com/rebirth-death2019/p/13778582.html

作者:Jude_Zhang
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用BY-NC-SA 许可协议。转载请注明出处!
支持博主:如果您觉得文章对您有帮助,可以点击文章下方赞一下。您的鼓励是博主的最大动力!
原文地址:https://www.cnblogs.com/judezhang/p/14333210.html