位运算基础与技巧
位运算
标志 | ↓=意义 |
---|---|
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 != b ,a - b ,a ^ b |
判断 x 是否不等于 −1 | x != -1 ,x ^ -1 ,x + 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 许可协议。转载请注明出处!
支持博主:如果您觉得文章对您有帮助,可以点击文章下方赞一下。您的鼓励是博主的最大动力!
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用BY-NC-SA 许可协议。转载请注明出处!
支持博主:如果您觉得文章对您有帮助,可以点击文章下方赞一下。您的鼓励是博主的最大动力!