如何用位运算实现取余运算
2026/8/24小于 1 分钟
取余 % 与位运算 & 的本质
1. % 在干什么?
a % n本质就是:
把结果限制在
0 ~ n-1。
例如:
13 % 8 = 5所以结果一定是:
0 ~ 72. 为什么 & 能做到同样的事?
前提:
n必须是 2 的幂。
例如:
8 = 2³
8 - 1 = 7 = 0111因此:
a & 7就是:
只保留
a的低 3 位。
低 3 位能表示的范围恰好是:
0 ~ 7所以:
a % 8等价于:
a & 73. 一句话理解
% 8
↓
结果限制在 0~7
↓
只需要保留低3位
↓
& 0111所以:
a % 8 == a & 7同理:
a % 16 == a & 15
a % 256 == a & 2554. 最终记忆
a % n是数学上的范围限制。
当:
n = 2^k时:
a % n可以通过:
a & (n - 1)实现。
本质:
%限制范围;&通过截取低几位实现同样的范围限制。

