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

歡迎光臨散文網(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ó)家法律
堆龙德庆县| 汝南县| 房产| 璧山县| 大方县| 茂名市| 长沙县| 栖霞市| 临安市| 玉树县| 东台市| 许昌县| 沐川县| 株洲市| 菏泽市| 射阳县| 铜陵市| 遂溪县| 宣威市| 秦安县| 鹤峰县| 宜城市| 冀州市| 余姚市| 綦江县| 边坝县| 宜阳县| 高阳县| 乐亭县| 许昌县| 郸城县| 精河县| 建始县| 孝感市| 拜城县| 昆山市| 临西县| 如皋市| 东乡族自治县| 南岸区| 靖州|