高效的二进制取模算法
限制必须是 长度必须是2的指数
- 直接取指数的低位长度算法
演示
- 长度为8
- 0b000(0)
- 0b001(1)
- 0b010(2)
- 0b011(3)
- 0b100(4)
- 0b101(5)
- 0b110(6)
- 0b11(7)
- 13 二进制 0x1101
- 13 mod 8 = 5
- 5的二进制 101
- 2^3 =8
- 直接取 0x1101 后三位 101
使用场景
- 布谷鸟过滤器
还有一种就是对某个除以2 直接 右移一位
- 10 = 2^3 + 2^1 二进制 1010
- 将其右移一位,得到二进制数 101,等价于将 10 除以 2
本文来自博客园,作者:vx_guanchaoguo0,转载请注明原文链接:https://www.cnblogs.com/guanchaoguo/p/17481868.html