java学习--高效的除模取余运算(n-1)&hash
2023-09-11 14:19:52 时间
没有测试过使用取余运算符和位运算符都做同一件事时的时间效率!
取余运算符%
如3除以2取余数
int a = 3 a = a%2; 结果为1
上面是传统的方式进行求余运算。
需要先将10进制转成2进制到内存中进行计算,然后再把结果转换成10进制
而位运算是直接在内存中进行,不需要经过这些转换
但是位运算只能用于除数是2的n次方的数的求余
也就是说,B%C,要满足C=2n
比如:
14%4 等价于 14&(22-1)
结果都是等于2
计算过程
14 1110
3 11
1110 & 11=10 = 2
但是14%6 不等价于 14&6
计算过程
14 1110
6-1=5 101
1110 & 101=100 = 4
这个6不是2n次方的倍数,所以算出来的结果都不会相等。
在哪个地方可以用到?
这个可以用于特定的hash求余算法中,比如HashMap中查找key的hash值对应的位置。可以提高查找位置的速度
用于已知的数据运算,20483%64,这种已知除数是2的n次方的程序中,HashMap中就是使用这种方式
相关文章
- [Java基础] java的守护线程与非守护线程
- java:Map借口及其子类HashMap二
- Java反射异常:java.lang.NoSuchFieldException
- JAVA学习(一):Java介绍及其平台、开发环境的配置与搭建
- Java实现 LeetCode 473 火柴拼正方形
- java实现第四届蓝桥杯阶乘位数
- java实现 蓝桥杯 算法训练 操作格子
- Java实现 蓝桥杯VIP 算法提高 计算时间
- Java 蓝桥杯 算法训练 字符串的展开 (JAVA语言实现)
- 图解 & 深入浅出Java初始化与清理:构造器必知必会
- java核心知识点学习----多线程间的数据共享的几种实现方式比较
- macos:安装java 17.0.6(android studio报错:Unable to locate a Java Runtime.)
- java&javaweb学习笔记
- 【收藏】HDFS的Java API使用
- 使用Java代码获得本地文件的各种属性
- Atitit 搜索蓝牙设备 powershell的实现 java noede.js python 先用脚本语言python nodejs,不好实现。。Java 也不好实现。。 Netcore可以,
- 华为OD机试 - 微服务的集成测试(Java & JS & Python)
- 华为OD机试 - 预订酒店(Java & JS & Python)
- 华为OD机试 - Excel单元格数值统计(Java & JS & Python)
- 华为OD机试 - 快递业务站(Java & JS & Python)
- 华为OD机试 - 最大平分数组(Java & JS & Python)
- 华为OD机试 - 数大雁(Java & JS & Python)
- 华为OD机试 - 勾股数元组(Java & JS & Python)
- 华为OD机试 - 太阳能板最大面积(Java & JS & Python)
- How to improve Java's I/O performance( 提升 java i/o 性能)
- Linux下Java环境变量配置(脚本版本)
- java中的transient 详细总结Java中transient关键字 对象写出流ObjectOutputStream 对象写入流ObjectInputStream
- Java的位运算符具体解释实例——与(&)、非(~)、或(|)、异或(^)
- Java开发技术之成为高级java工程师必须学习的三个技术
- Java Instrumentation 内存马——主要是利用Instrumentation Java API来做内存注入,会用到反射机制,文中提到检测思路:注入jar包-> dump已加载class字节码->反编译成java代码-> 源码webshell检测
- 【java】Java 集合框架