位运算基础与技巧

位运算

标志 ↓=意义
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

posted @ 2021-01-27 15:50  Jude_Zhang  阅读(42)  评论(0编辑  收藏  举报