当前位置: 欣欣网 > 码农

今日代码大赏 | 位运算代替乘除法

2024-04-03码农

在所有的运算中,位运算是最为高效的选择。

而位运算中最典型的情况就是针对整数的乘法和除法运算进行优化。

下面让我们一起欣赏下普通乘除算术运算和位运算在执行效率上的提升吧!

普通乘除算术运算示例代码:

@Test
publicvoidtest() {
longstart = System.currentTimeMillis();
inta = 0;
for(int i=0;i<1000000000;i++){
a*=2;
a/=2;
}
longuseTime = System.currentTimeMillis()-start;
System.out.println("useTime:"+useTime);
}

上面这段代码运行结果: useTime:1451

将循环体中的乘除运算改为等价的位运算,性能直接提升了100多倍!

位运算 示例代码:

@Test
publicvoidtest(){
longstart = System.currentTimeMillis();
intaa = 0;
for (int i=0;i<1000000000;i++){
aa<<=1;
aa>>=1;
}
longuseTime = System.currentTimeMillis()-start;
System.out.println("useTime:"+useTime);
}

上面这段代码运行结果: useTime:10

上两段代码执行了完全相同的功能。

在每次循环中,都将整数乘以2,并除以2。

但是运行结果耗时相差确是100多倍。

所以位运算的效率还是显而易见的。


大家对今天的代码有什么看法呢? 欢迎在评论区留言分享~

完整代码片段来源于代码小抄,欢迎点击进入小程序阅读!

在线访问:https://www.codecopy.cn/post/ji9prp

在代码小抄可以看到更多优质代码,也欢迎大家积极分享,可能会获得我们官方的小礼品 🎁~

往期推荐