比Math类库abs()方法性能更高的取绝对值方法介绍
作者:简简单单OnlineZuozuo 发布时间:2023-10-14 07:51:36
标签:math,绝对值,abs()
Math.abs()的实现源码
通过三目运算符判断a是否小于0来实现
/**
* Returns the absolute value of an {@code int} value.
* If the argument is not negative, the argument is returned.
* If the argument is negative, the negation of the argument is returned.
*
* <p>Note that if the argument is equal to the value of
* {@link Integer#MIN_VALUE}, the most negative representable
* {@code int} value, the result is that same value, which is
* negative.
*
* @param a the argument whose absolute value is to be determined
* @return the absolute value of the argument.
*/
public static int abs(int a) {
return (a < 0) ? -a : a;
}
如果换种方式,性能会有20%左右的提升
代码如下
/**
* Created by 谭健 2017/8/13. 12:47.
* All Rights Reserved
*
* int 是 32 位数据
* int 类型的任何正数右移31位 = 0,任何负数右移31位 = 1
* 溢出 31 位截断,空出 31 位补1,得到-1
* a>>31 可以得到该数的符号位 + 还是 -
* 如果 a>>31 + ,那么 a ^ 0 = a ,如果 a>>31 - ,那么 a ^ -1 翻转 a 的二进制
*
* @param a int a
* @return a 的绝对值
*/
public static int abs(int a){
return (a^(a>>31))-(a>>31);
}
奇数偶数的判断
/**
* 一般普遍采用 n % 2 == 0 的方式
* 但是如果换成位运算方式,效率会比前者好很多
*
* 在二进制中,末位为 0 必然是偶数,否则是奇数,并且不论正负
* 所以,是什么数,看看末位就行了
*
* @param a long a
* @return 如果是奇数,返回true,否则返回false
*/
public static boolean isOdd(long a){
return (a & 1) == 1;
}
来源:https://blog.csdn.net/qq_15071263/article/details/77142001


猜你喜欢
- Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这个
- 本文实例讲述了C#实现char字符数组与字符串相互转换的方法。分享给大家供大家参考,具体如下:一、字符串转换为字符数组char[] temp
- 这两天做了一个项目,发现标签不能更改任意一个标签的字体的颜色,需求如同置前标签,然后就对tagcloudeview稍做修改做了这么一个dem
- Android Service 详细介绍:1、Service的概念 2、Service的生命周期 3、实例:控制音乐播放的Service一、
- 1、运算符两边的变量为boolean变量时 先列出代码:public clas
- Java中java.io包为我们提供了输入流和输出流,对文件的读写基本上都依赖于这些封装好的关于流的类中来实现。前段时间遇到了以下两种需求:
- 目录源码使用源码@Target({ElementType.TYPE, ElementType.METHOD})@Retention(Rete
- 一、简介用法ScrollView大致相同二、方法1)HorizontalScrollView水平滚动控件使用方法1、在layout布局文件的
- Spingboot JPA CriteriaBuilder获取指定字段废话不说直接贴代码public class ActivityVO im
- 前言最近在学习spring,抽空会将学习的知识总结下面,本文我们会接触spring 4的新功能:@Conditional注解。在之前的spr
- 在APP项目的开发过程中,经常会用到分享图片的功能,有时候还需要根据当前用户信息获取指定的分享图片,比如要求在用户分享图中显示用户名、Uid
- 目录匿名方法的代价C#9 中使用静态匿名方法匿名函数 在 C# 中已经出现很多年了,虽然匿名函数用起来很爽,但代价是不小的,为了避免不必要那
- 新建一个txt的文本(代码中读取这个文本文档路径就行,命名随意)里面的内容一行代表一个,因为我是按行来遍历循环读取要屏蔽的关键字.然后用一个
- 今天在码代码的时候突然想到这个问题,觉得有点困惑。在网上也翻阅不少帖子其中有一个帖子给了我一个思路,其实也是解释了基础概念。概念一:try
- 对象嵌套关联查询一对多List集合查询mybatis嵌套关联查询如下由于我的是一对集合查询,所以我有两个类。@Data@TableName(
- 本文实例为大家分享了Java多线程实现复制文件的具体代码,供大家参考,具体内容如下/** * 实现文件复制功能 * 多线
- 背景:在写登录界面时,老板就觉得在输入密码的时候谈出来的输入法软键盘把登录按钮遮挡住了(入下图所示,不爽),连输入框都被挡了一半
- 类1.什么是类类是事物的属性(外在特征)和行为(具备的功能)的集合2.想要知道Java中类是什么我们要先知道现实生活中的类是什么,因为Jav
- 本文实例为大家分享了spring mvc实现文件上传与下载功能的具体代码,供大家参考,具体内容如下文件上传在pom.xml中引入spring
- 秒杀功能秒杀场景现在已经非常常见了,各种电商平台都有秒杀的产品,接下来我们模拟一个秒杀的项目,最终能够确保高并发下的线程安全。界面比较简单,