最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

無符號(hào)整型除法的快速算法

2020-05-31 18:13 作者:九條可憐醬  | 我要投稿

眾所周知,即使是現(xiàn)在最新的CPU整數(shù)除法指令依然是相當(dāng)慢的,在某些情況下耗時(shí)和幾十次位運(yùn)算差不多。而整數(shù)乘法指令則相當(dāng)快,耗時(shí)和兩三次位運(yùn)算相當(dāng)。

各種主流編譯器很早就明白了這個(gè)道理,它們會(huì)對(duì)除數(shù)為常量的整數(shù)除法進(jìn)行優(yōu)化,優(yōu)化成整數(shù)乘法和移位運(yùn)算。

下面我們來看一些編譯器優(yōu)化的例子。

GCC?-O2
C# JIT ASM

可以看到編譯器把x/5優(yōu)化成了(unsigned int)((x*3435973837ULL)>>34)。那么問題來了,編譯器都干了些什么,乘以3435973837和右移34是怎么算出來的?


下面我只說這2個(gè)數(shù)怎么算出來的,具體數(shù)學(xué)原理可以在文章末尾的鏈接參考某大佬的文章。

在32位無符號(hào)整型范圍內(nèi),將x/y變成(x*a)>>b等價(jià)形式,那么:

當(dāng)然,這么直接有缺點(diǎn)的,超出32位范圍了,如何繼續(xù)優(yōu)化參考大佬文章吧!



參考:http://ridiculousfish.com/blog/posts/labor-of-division-episode-i.html


無符號(hào)整型除法的快速算法的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
安多县| 湘潭市| 蒙城县| 九龙城区| 南平市| 封丘县| 沙洋县| 峨眉山市| 金沙县| 会东县| 耒阳市| 东阳市| 伊金霍洛旗| 正定县| 吴堡县| 屯昌县| 日土县| 宜城市| 镇赉县| 奇台县| 桂阳县| 溧水县| 巍山| 海南省| 宁德市| 北辰区| 玉林市| 南京市| 陇西县| 温州市| 两当县| 惠安县| 云龙县| 乌审旗| 龙川县| 二手房| 上栗县| 隆子县| 闸北区| 高要市| 凤翔县|