\(\Huge \color{Cadetblue}{\texttt{0x01 位运算}}\)
\(\color{cadetblue}{\textbf{1.介绍}}\)
通过对一个个 \(\operatorname{bit}\) (二进制位)的操作,提高程序运行时空效率,降低编程复杂度。
\(\color{cadetblue}{\textbf{2.操作}}\)
-
$,|,~,^,<<,>>
等基本操作 -
lowbit(x) = x & (-x)
表示 \(x\) 在二进制下最低位 \(1\) 及后面的 \(0\) - \(n\) 的第 \(k\) 位:
(n >> k) & 1
- \(n\) 的后 \(k\) 位:
n & ((1 << k) - 1)
- \(n\) 的第 \(k\) 位取反:
n ^ (1 << k)
- \(n\) 的第 \(k\) 位赋 \(1\):
n | (1 << k)
- \(n\) 的第 \(k\) 为赋 \(0\):
n & (~(1 << k))
\(\color{cadetblue}{\textbf{3.【模板】快速幂}}\)
int Power(int a, int b, int p){
int res = 1;
for(; b; b >>= 1){
if(b & 1)res = 1ll * res * a % p;
a = 1ll * a * a % p;
}
return res;
}