浮點演算法轉化為固定點如何完成?

時間 2021-10-18 06:59:16

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演算法中,後面繼續採用科學計數法將整數再次壓縮成指數來儲存,從而提高了精度

為什麼能提高精度?

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

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

質量可以轉化為能量,那能量可以轉化為物質嗎

Acid 可以,但不是我們想像的有足夠的能量就能隨便產生任何物質。除了質能守恆定律以外,宇宙還有很多其它的守恆律,比方說動量守恆 電荷守恆等等。所以即使給你足夠的能量,由於電荷守恆,你依然不能憑空變出乙個電子,只能同時產生一對電子和反電子。類似的,由於重子數守恆和輕子數守恆,你也不能憑空變出乙個氫原...

能量能否轉化為質量?

我覺得質量是一種資訊。不知道這裡能量的定義是什麼呢?可以認為兩個 身體物質比例成分相同 的乙個軍師比乙個肥宅有能量嗎 能量可以轉化為質量。例如在CERN的強子對撞機 LHC 上,高能碰撞的兩個質子會發生散射,散射過後質子不會發生任何改變,但散射過程中可以產生新的粒子如 用反應式可以表示為 有意思的是...

如何把知轉化為行?

john 一,你的知不是真正的知,只是玩弄光景,憑空瞎想的白日夢。二,你想要借力於外物完成行,那就是單純的懶惰。但懶惰不可恥,反而警醒著我們此一 知 非真知。 雲歌 知行合一,就是知行一體,做到了才是知,做不到就不算知。我猜你想問的其實是明明感覺自己應該做什麼是,卻沒有去做,怎麼辦?解決這個問題,我...