當前位置: 妍妍網 > 碼農

今日程式碼大賞 | 位運算代替乘除法

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

在程式碼小抄可以看到更多優質程式碼,也歡迎大家積極分享,可能會獲得我們官方的小禮品 🎁~

往期推薦