定點運算小貼士

2021-04-13 00:04:45 字數 1365 閱讀 6354

工作中遇到了需要將浮點運算轉化為定點運算的情況。現在把我這幾天研究拿出來和大家分享。

1. 如何表示乙個既有整數部分也有小數部分的數?

使用定點表示這樣的數需要固定小數點的位置。用n位元表示該數,則小數點位置在某個位置,小數點左邊用來表示整數,小數點右邊表示小數。如

1110.1010            0011.0010

整數 小數             整數 小數

上面8bit的高4位用來表示整數,低4位用來表示小數。

2. 根據需要表示的數的範圍確定使用的位元數n。

用n位元表示乙個無符號的有理數,用a位元表示整數,用b位元表示小數,則有n = a + b。能表示的無符號數的範圍為0 到2^a - 2^(-b)。

如果表示有符號的有理數,則在n位元中,還需要用用c位元表示符號。則有n = a + b + c。表示的數範圍為-2^a到2^a - 2^(-b)。

小數部分使用的位元數b,決定了該定點數的精度

b                           精度

1                           0.5

2                           0.25

3                           0.125

4                           0.0625

8                           0.00390625

16                         0.0000152587890625

24                        0.000000059604644775390625

32                        0.00000000023283064365386962890625

如需要表示1987.7891,則整數部分至少需要11位(不包括符號)。精確到小數點四位,則精度至少要小於0.0001,則至少需要14位。考慮需要表示數的最大範圍確定選用的位元數。

3. 如何用c語言進行定點運算。

舉例進行說明。

表示精度為0.0001 用16位(小數部分)

符號位                     用2位

整數                         用14位

這樣可表示得數的範圍為-16384到16383.9999847412109375

進行四則運算就不需要我說了吧。加減乘除在計算機組成原理中已經有很清楚的表述了。需要說明的是進行除法時如果使用加減交替法,則當乙個很大的數處以乙個很小的數時,則進行除法的次數會相當的大,因此這種情況下進行優化的空間非常大。

就寫到這裡了。

聯絡俺:[email protected]

DSP定點運算

在定點dsp晶元中,採用定點數進行數值運算,其運算元一般採用整型數來表示。乙個整型數的最大表示範圍取決於dsp晶元所給定的字長,一般為16位或24位。顯然,字長越長,所能表示的數的範圍越大,精度也越高。數的定標 由程式設計師來確定乙個數的小數點處於16位中的哪一位 通過設定小數點在16位數中的不同位...

FPGA定點運算

1 定點小數運算 所謂定點小數,實際上就是用整數來進行小數運算。以16bit的儲存單位最多可以表示0x0000到0xffff,65536種狀態,如果表示無符號整數的話,就是從0到65535.如果需要表示負數的話,那麼最高位就是符號位,而剩下的15位就可以表示32768種狀態。對於計算機來說,符號並沒...

定點運算(一) 移位運算

移位 為什麼要移位?在計算機裡面,移位操作可以與加減法操作一起構成乘除法運算。注意 因為計算機裡面沒有專門的硬體來表示小數點,小數點是人為約定的 這就說明小數點的位置是不可變的。即移位操作動的是資料而不是小數點。移位的規則 符號位不變,因為負數移位之後還是負數,不可能因為乙個移位就變成正數了,下面是...