更新歷史使用定點小數,可以將小數的儲存和運算,轉化為整數的儲存和運算。定點小數的運算,需要小心地處理位寬問題。除此以外,在硬體計算中,還經常會遇到需要對定點小數進行截斷與擴充的情況。20190405:
首次發布
接下來,本文將以十進位制下非負定點小數為例,讓讀者明白為什麼要對定點小數進行截斷與擴充,然後講解二進位制下無符號和有符號定點小數的截斷與擴充。
假定在十進位制下用非負定點小數做如下的運算:
嗯,這就尷尬了,位寬沒對齊,沒法直接做加法。不過別急,解決方案有兩個。
方案1:
不對a
定a_定
a定進行處理,而是對b
定b_定
b定進行截斷:
於是,截斷後得到:
此時,b定,
截斷
b_b定
,截斷
的位寬和a
定a_定
a定是對齊的,兩者就能做加法運算了,並且:雖然對b
定b_定
b定做了位寬截斷,但是計算結果該是什麼值仍然是什麼值。
方案2:
不對b
定b_定
b定進行處理,而是對a
定a_定
a定進行擴充:
於是,擴充後得到:
此時,a定,
擴充
a_a定
,擴充
的位寬和b
定b_定
b定是對齊的,兩者就能做加法運算了,並且:雖然對a
定a_定
a定做了位寬擴充,但是計算結果該是什麼值仍然是什麼值。
通過上面的兩個解決方案,我們可以看到:
對於二進位制下無符號定點小數的截斷與擴充,其規律和十進位制下非負定點小數相同:
注:「最高位之前」指的是比最高位更高的位。所謂的「某一位更高」,指的是二進位製碼的某一位所佔的權重更大。
注:「最低位之後」指的是比最低位更低的位。所謂的「某一位更低」,指的是二進位製碼的某一位所佔的權重更小。
例如:
設二進位制下的乙個無符號定點小數:
那麼:而對於二進位制下有符號定點小數的截斷與擴充,由於牽涉到符號位,其規律稍稍有些不同,分析可知:
例如:
設二進位制下的乙個有符號定點小數:
那麼:
FPGA浮點小數與定點小數的換算及應用
有些fpga中是不能直接對浮點數進行操作的,只能採用定點數進行數值運算。所謂定點小數就是把小數點的位置固定,我們要用整數來表示小數。先以10進製為例。如果我們能夠計算12 34 46的話,當然也就能夠計算1.2 3.4 或者 0.12 0.34了。所以定點小數的 加減法和整數的相同,並且和小數點的位...
定點數與浮點數 小數
一 計算機中一共有兩種機器數型別 機器數就是計算機中參與運算的有符號二進位制數,其實,它與我們平時使用的十進位制一樣,有整數也有小數,但是關鍵在於,如果二進位制與我們平時書寫十進位制小數一樣,帶上乙個 那麼二進位制受困於儲存器中字長的限制,無法靈活地表示小數的小數點 所以,二進位制的小數在儲存器中的...
譜範數的理解與論述
對於任意兩點間來說,直線距離最短。而計算兩點間距離的公式就是源於眾所周知的勾股定理的基礎上推導而來的。事實上,不僅對於人們所熟知的二維空間和三維空間如此,對於高維空間亦是如此。在數學上,一般將高維空間的點表示為乙個多維向量,而任意乙個點到原點的直線距離則稱為該點的二範數。對於諸多的計算機或數學相關的...