高效的二进制取模算法

限制必须是 长度必须是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
posted @ 2023-06-15 08:57  vx_guanchaoguo0  阅读(227)  评论(0编辑  收藏  举报