使用 & 进行高效率取余运算

使用 & 进行高效率取余运算

Java的HashMap源码中用到的(n-1)&hash这样的运算,这是一种高效的求余数的方法

结论:假设被除数是x,对于除数是2n的取余操作x%2n,都可以写成x&(2n-1),位运算效率高!

举例:259%8=259&7=3

原理:因为对8的取余结果肯定小于8

​ 在二级制中,8=(1000)2,因此取余结果肯定小于等于7=(0111)2

​ 因此对于被除数的二进制来说,只需要保证后三位保留下来即可(后三位保留下来肯定小于8)

​ 此时保存下来的结果就是取余结果

​ 259 : 1 0 0 0 0 0 0 1 1
​ 7 : 0 0 0 0 0 0 1 1 1

​ 要保存后面的三个数,就需要使用到位运算:(&运算中1&1=1,1&0=0,0&0=0)

​ 此时位运算结果:0 0 0 0 0 0 0 1 1

​ 转换为10进制就等于3!

注意:只有对于除数是2n,才可以使用此方法进行取余运算

公式: x%2n == x&(2n-1)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115179.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 连接docker中的mysql_搭建docker环境

    连接docker中的mysql_搭建docker环境使用docker部署springboot项目并连接上mysql数据库需要的知识Linux操作系统docker(了解git的工作方式即可)工具xshell(用来连接linux服务器)xftp用来给linux服务器上传文件sqlyog(或者navicat)在服务器上解析.sql脚本maven(idea自带)用来打包接下来我们开始正式操作服务器的选择我选择的是阿里…

    2022年8月31日
    3
  • potPlayer 快捷键[通俗易懂]

    potPlayer 快捷键[通俗易懂]空格:播放/暂停 Enter/Alt+Enter:全屏  c–加速  x–减速  z–恢复原速度,再次则恢复上次速度(类似以前电视机的【回看】功能) Tab:显示当前播放视频信息 H:书签管理器 P:添加书签 M:静音 第一行除【p】外:调整图像色彩、亮度、对比度、饱和度、复位 D:定位上一帧,省去截屏与倒退的烦恼 F:定位下一帧 G:直接输入定位位置 0:…

    2022年5月11日
    166
  • jsessionid是什么意思(请求头jsessionid)

    (1)这是一个保险措施因为Session默认是需要Cookie支持的但有些客户浏览器是关闭Cookie的这个时候就需要在URL中指定服务器上的session标识,也就是5F4771183629C9834F8382E23BE13C4C用一个方法(忘了方法的名字)处理URL串就可以得到这个东西这个方法会判断你的浏览器是否开启了Cookie,如果他认为应该加他就会加上去(2)

    2022年4月14日
    138
  • ListView灵活的用法

    以下是示例的效果图:WinForm的ListView控件是可以分组显示的,还可排序。可以把ListView的View属性设置为Details完整项目请到下面网址查找下载http://hovertre

    2021年12月27日
    44
  • awk详解「建议收藏」

    awk详解「建议收藏」awk是linux中处理文本的强大工具,或者说是一种专门处理字符串的语言,它有自己的编码格式。awk的强大之处还在于能生成强大的格式化报告。awk的命令格式如下:其中常用选项有-F、-f等选项,后面会介绍。例如>awk-F:'{print$1}’file表示把file文件中每行数据以“:”分割后,打印出第一个字段。下面详细介绍使用方式。以下示例如不做…

    2022年7月11日
    11
  • Cloudsim_java源码大全

    Cloudsim_java源码大全CloudSim介绍和使用1.CloudSim简介:2.CloudSim提供了以下新的特点:(1)支持大型云计算的基础设施的建模与仿真;(2)一个自足的支持数据中心、服务代理人、调度和分配策略的平台。(3)CloudSim独特功能有:3.CloudSim源代码介绍几个核心类:4.CloudSim下载,CloudSim在IDEA中配置5.CloudSim环境配置6.CloudSim的扩展7.使用CloudSim仿真的一般步骤1.CloudSim简介:2009年4月8日,澳大利亚墨尔本

    2022年10月13日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号