JAVA中为什么可以使用位运算(&)来实现取模运算(%)呢?
"实现原理: X % 2^n = X & (2^n - 1) 2^n 表示 2 的 n 次方,也就是说,一个数对 2^n 取模 == 一个数和(2^n - 1)做按位与运算 。 假设 n 为 3,则 2^3 = 8,表示成 2 进制就是 1000。2^3 -1 = 7 ,即 0111。 此时 X & (2^3 - 1) 就相当于取 X 的 2 进制的最后三位数。 从 2 进制角度来看,X / 8 相当于 X >> 3,即把 X 右移 3 位,此时得到了 X / 8 的商,而被移掉的部分(后三位),则是 X % 8,也就是余数。
资料来源:《Java工程师成神之路(基础篇)》,链接:https://developer.aliyun.com/topic/download?id=923"
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。