定點數的表達方式

關注我的公衆號c137Lab獲取更多相關內容

在這裏插入圖片描述

無符號整數 Unsigned Integer

​ 設 XX 是一個 NN 位無符號二進制數,其範圍爲 [0,2N1][0,2^N-1] ,表示方法如下:
X=n=0N1xn2n X=\displaystyle \sum^{N-1}_{n=0}x_n2^n
​ 其中 xnx_nXX 的第 NN 位二進制數字(也就是 xn[0,1]x_n\in[0,1])。數字 x0x_0 被稱作最低有效位(Least Significant Bit,LSB),具有相當於個位的權重。數字 xn1x_{n-1} 就是最高有效位(Most Significant Bit,MSB)。具有相當於 2N12^{N-1} 的權重。

有符號數值 Signed-MagnitudeSM

NN 位有符號整數中的第一位(即MSB)代表符號,餘下的 N1N-1 位代表數值。範圍爲 [(2N11),2N11][-(2^{N-1}-1),2^{N-1}-1].

  • 優點:有助於防止溢出。
  • 缺點:加法需要根據哪一個操作數更大分開運算。
二進制補碼 Two’s Complement2C

​ 最爲流行的有符號數字系統,NN 位二進制補碼的表達範圍爲 [2N1,2N11][-2^{N-1},2^{N-1}-1] ,溢出可以忽略

例如,計算 323-2 的值時

在這裏插入圖片描述
不難看出這時溢出可以忽略。

​ 二進制補碼還可以用來實現模 2N2^N 算法而不需要在算法中做任何改動(應用於設計CIC濾波器).

二進制反碼 One’s Complement1C

NN 位二進制反碼錶達範圍爲 [(2N1+1),2N11][-(2^{N-1}+1),2^{N-1}-1] , 00 有正零和負零兩種冗餘的表達。
在這裏插入圖片描述

​ 如圖,二進制反碼在運算中需要“進位迴繞(carry wrap-around)”加法。但是其可以有效的實現模 2N12^N-1 運算,而且不需要矯正,在實現特殊算法(如整數環上的Mersenne變換)時有特殊價值.

減一系統 Diminished one SystemD1

​ 減一系統是一種有偏差的系統,正整數與二進制補碼相比減少了1。 N1N-1 位 D1 數值的範圍是 [2N1,2N1][-2^{N-1},2^{N-1}](不含0). D1的編碼規則如下:
X={n=0N2xn2n+1X02N1+n=0N2xn2nX>02NX=0 X=\begin{cases} \displaystyle\sum^{N-2}_{n=0}x_n2^n+1& X\geq0\\ -2^{N-1}+\displaystyle\sum^{N-2}_{n=0}x_n2^n& X>0\\ 2^N& X=0 \end{cases}

​ 爲方便理解,下表爲3位D1編碼的例子:

二進制數 D1
011 4
010 3
001 2
000 1
111 -1
110 -2
101 -3
100 -4
1000 0

下面是兩個D1數值相加運算的例子:

在這裏插入圖片描述

​ 從上面的例子看出 D1 必須計算補碼和反向進位的加法。D1數值不需要在算法上做出任何改動就能有效實現模 2N+12^N+1 運算(例如實現費爾馬Network Transfer Table,NTT).

偏差系統 Bias System

​ 偏差系統對所有數都有一個偏差(bias),通常bias=2N11bias=2^{N-1}-1NN 位偏差數的範圍是 [2N11,2N1][-2^{N-1}-1,2^{N-1}],0 就被編碼爲 biasbias 的值。定義如下:
X=n=0N1xn2nbias X=\displaystyle\sum^{N-1}_{n=0}x_n2^n-bias

偏差系統加法實例:

​ 對於加法,每次運算都要減掉偏差,對於減法,每次運算都要加上偏差。偏差能夠簡化數值的比較,可以用於對浮點數指數的編碼中.

參考文獻:Digital Signal Processing with Field Programmable Gate Arrays --U.Meyer-Baese

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章