写点什么

模运算和与运算的一点儿简单思考

作者:LSJ
  • 2021 年 12 月 03 日
  • 本文字数:362 字

    阅读完需:约 1 分钟

用与运算等价替换模运算的场景还挺多的,原因之一就是与运算效率比模运算高。能够等价替换的前提条件:要模的值是 2 的整数次幂。

等价公式是这样的:num % = num &

比如:num % 64 = num & 63

只要记住这个公式就可以明白为什么 HashMap 桶的长度是 2 的整数次幂,为什么在 BitMap 中会出现 &63 的表达式,

也可以理解将一个无符号数截断位 w 位等价于计算该值模

但是为了领略位运算的精妙之处,所以把这个公式的原理梳理一下。

比如当 n=6 时 值是 64, 对应的二进制代码为 1 0 0 0 0 0 0, 当 num = 76 时 对应的二进制代码为:1 0 0 1 1 0 0

就等于除取余,余数 = 小于第 n 位的二进制数的和 因为余数只能在第 n 位的右边,接下来就是如何确定右边的数到底是多少,63 的二进制代码是:1 1 1 1 1 1,与上 num 就能确认第 0 位到第 n-1 位的值是多少

先简单记录一下吧,感觉也没什么可写的的了

发布于: 3 小时前阅读数: 7
用户头像

LSJ

关注

微笑面对每一天 2018.11.11 加入

一个具有N年编程功力却早已拥有2N年工作经验的boy

评论

发布
暂无评论
模运算和与运算的一点儿简单思考