首先说一下数值类型的乘积
例如:a = 256 * 100 原理就是将256加100次以后得出结果。
下面说一下位运算的原理:
100 = 64 + 32 + 4 = 26 + 25 + 22
a = 256 * 26 + 256 * 25 + 256 * 22 = (256<<6)+(256<<5)+(256<<2)
内容中出现的 “<<” 箭头向左表示乘2 ,向右表示除2 , 其默认值是1.
箭头后跟的数表示2 的幂次,例如 256<<6 就表示 256 * 26 . 除法类推。
下面开始测试位运算的优化:
package test;
public class number {
public static void method_01(){
double start = System.currentTimeMillis();
int a = 256 * 100;
System.out.println("结果:"+a);
double end = System.currentTimeMillis() ;
System.out.println("程序运行时间(毫秒) : " + (end - start));
System.out.println("--------------------------------");
}
public static void method_02(){
double start = System.currentTimeMillis();
int b = (256<<6)+(256<<5)+(256<<2);
System.out.println("结果:"+b);
double end = System.currentTimeMillis() ;
System.out.println("程序运行时间(毫秒) : " + (end - start));
}
public static void main(String[] args) {
method_01();
method_02();
}
}
由运行结果可以看出 ,哪种方法运算速度更快了吧。
(引用或转载请标明出处,谢谢)