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; }
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对小牛知识库的支持。
本文向大家介绍JavaScript中Math对象的方法介绍,包括了JavaScript中Math对象的方法介绍的使用技巧和注意事项,需要的朋友参考一下 1.比较最值方法 比较最值有两种方法,max() 和 min() 方法。 1.1 max() 方法,比较一组数值中的最大值,返回最大值。 1.2 min() 方法,比较一组数值中的最小值,返回最小值。 2.数值舍入方法 2.1 ceil() 方法,
本文向大家介绍js中取得变量绝对值的方法,包括了js中取得变量绝对值的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了js中取得变量绝对值的方法。分享给大家供大家参考。具体分析如下: 绝对值在js中我们直接使用abs函数来求,这里就来整理一些关于js中取得变量的绝对值的方法,以便让大家更深入的理解js绝对值的用法 js中的绝对值不怎么常用到,今天在写一个方法的时候遇到了,于是记录下来,
主要内容:静态常量,求最大值、最小值和绝对值,求整运算,三角函数运算,指数运算Java 中的 +、-、*、/ 和 % 等基本算术运算符不能进行更复杂的数学运算,例如,三角函数、对数运算、指数运算等。于是 Java 提供了 Math 工具类来完成这些复杂的运算。 在 Java 中 Math 类封装了常用的数学运算,提供了基本的数学操作,如指数、对数、平方根和三角函数等。Math 类位于 java.lang 包,它的构造方法是 private 的,因此无法创建 Math 类的对
问题内容: 我正在通过缓冲读取器机制读取日志文件,该机制占用的总执行时间以毫秒为单位:12944,请告知我该如何提高性能并降低该时间,请注意,尼奥比缓冲读取器的性能更好。 !文件大小为10MB,因为它是一个日志文件。也请告知使用nio也可以实现相同的目的.. !! 问题答案: 由于OP渴望了解如何使用NIO来完成此操作。 由于文件很小,很难看到差异,但是可以测量。 打印每一行的长度为102字节,因
其实就是针对一些图片实际使用场景而封装的方法,因为生成结果是图片不方便验证结果,所以请自行肉眼判断 添加水印 添加位置默认提供9个选择: Images.WATERMARK_TOP_LEFT Images.WATERMARK_TOP_CENTER Images.WATERMARK_TOP_RIGHT Images.WATERMARK_CENTER_LEFT Images.WATERMARK_CENT
本文向大家介绍pandas中apply和transform方法的性能比较及区别介绍,包括了pandas中apply和transform方法的性能比较及区别介绍的使用技巧和注意事项,需要的朋友参考一下 1. apply与transform 首先讲一下apply() 与transform()的相同点与不同点 相同点: 都能针对dataframe完成特征的计算,并且常常与groupby()方法一起使用。