定點運算和浮點運算哪個速度快

時間 2021-12-21 14:13:42

1樓:來知曉

一般來講,定點運算更快,因為浮點運算涉及到複雜的定點轉換。

具體原理見下文:

目錄

基本概念

浮點數與定點數對映轉換

浮點到定點

定點到浮點

定點數與浮點數儲存的區別

參考資料

在分析講解定點和浮點之間對映前,我們需要了解以下基本概念。

位寬

乙個浮點數用多少位的整數來表示

如(16, 4),則表示用16位整數來表達浮點數

假設為有符號數

則其中:1位為符號位,4位數為表達整數,剩餘11位表達(0, 1)的小數

分布如圖:

標值

即指用多少位,來儲存小數

若位寬表示為(16, 4),則標值為Q15

一句話表達:浮點數乘以2^Q,然後圓整或截斷成整數,即得定點數。其中Q為定標值。

總體過程如下圖:

由於定點到浮點是浮點轉換的逆過程,所以核心只要掌握浮點到定點的對映即可。

主要思路:

檢視對應變數的浮點值範圍

取絕對值後,找到最大值,並截斷取整為maxNum

分析需要多少位來存maxNum,剩餘的位數則乙個留給符號位,其餘位留給小數字

如用32位定點存浮點數,用25位來存整數,留1位符號位,剩6位給小數,故位寬表示(32, 25),標值為Q6

定點值 fix = float * 2^6,將整數左移6位,低6位則是小數轉換而來

定點能表示的浮點數精度為:1/2^6=0.015625,用最小的定點數1,來轉化成最小浮點數,得到精度值

一句話表達:二進位制轉化為十進位制整數,定點整數除以2^Q,做浮點運算,結果即為對應浮點數。

總體過程如下圖:

主要步驟:

知道標值Q,則定點是浮點轉換的逆過程

公式為 float = fix / 2^6

整數部分,fix右移6位後得到的結果

小數部分,就是用定點除法運算fix/2^6的餘數mod,mod / 2^6做浮點運算所得結果

聯絡之前文章《計算機中浮點數儲存的本質》,下面將定點數與之對比:

總述:核心原理類似,具體實現不同

核心相同處

都是將整數移至高位,剩餘位給小數字

IEEE演算法裡科學計數法前面的步驟跟定點數相同

如:19.625,用32bit浮點存

IEEE科學計數法前的結果:10011.101,假設用8位存整數,1位存符號位,剩餘23位存小數

用Q23的定點表達:00010011.10100000000000000000000

具體不同處

定點數的標是可變的,32位浮點數IEEE演算法固定只用8位來存指數部分,1位來存符號位,剩餘位數存尾數

浮點數儲存演算法更複雜,定點數步驟僅相當於只到IEEE演算法科學計數法前面

IEEE演算法中,後面繼續採用科學計數法將整數再次壓縮成指數來儲存,從而提高了精度

為什麼能提高精度?

用更少位數來存整數,更多位數來存小數,以提高精度

參考資料計算機中浮點數儲存的本質分析

2樓:Joffe Chiu

按理論來講理論上浮點運算是會被定點運算慢的因為浮點運算複雜但現在CPU裡有整合專門的浮點運算FPU來提高這個計算速度.

就好比理論上鋁的散熱比鐵快,但鐵塊有水冷裝置...

然而,實際沒低很多...

公共 DNS 哪個好(速度快 穩定)?

鳥語花香 如果國內國外都有訪問需求 Google 8.8.8.8和 IBM 9.9.9.9 都是不錯的選擇。如果純粹國內訪問,推薦CNNIC的1.2.4.8 Quinner 不邀自答 國內公共DNS推薦 阿里 223.5.5.5 223.6.6.6CNNIC也不錯 1.2.4.8 華為DNS 自用,...

漂移板和滑板哪個好玩?哪個速度快?哪個會比較輕鬆些?

聖波菲索凡 漂移板我的瞬時極限速度應該是35 40km h,1km最短用時是150s 即24km h,但這並不是我的極限,因為我剎車不好,遇到車輛路口行人之類的必須要減速,可以說是我在保證安全下的極限速度 漂移板馬拉松的記錄是1h40min 約26km h,好像是fyy團隊的成績 輪滑是55min ...

哪個電腦檔案搜尋軟體速度快,好用?

離子空間 電腦檔案找不到這件事兒,相信很多朋友都遇到過,用電腦自帶的檔案搜尋吧,那間簡直太慢了,等得砸電腦的衝動有木有。everything 它搜尋檔案非常的快,具體有多快?搜尋2萬 的檔案,只需要1秒鐘,基本是輸完即出,誰用誰知道。當然除了快之外,它還 免費使用 體積小,占用系統資源很少 介面乾淨...