資料的表示與運算 浮點數

2022-06-02 06:36:10 字數 1400 閱讀 7096

計算機中,數字分為定點數和浮點數。相對於浮點數,定點數比較好理解,原碼補碼反碼移碼。而浮點數十分繁雜。

關於浮點數的繁雜,我覺得最好的解釋就是,\(william\ m. kahan\)因其在浮點數運算標準的制定上的突出貢獻而獲得圖靈獎。\(kahan\)也是浮點數\(ieee754\)標準的主要設計師。

初識浮點數:

假如說我們現在想要表示光速這樣乙個數值,我們可以怎麼做?

兩種方法比較:

浮點數的表示:

通常,浮點數可以表示為:\(n=r^e*m\)。

其中\(r\)是階碼的底,通常為\(2\),且與尾數的基數相同。

\(e\)是階碼,\(m\)是尾數。

如下所示:

階碼是整數,階符和階碼共同表示浮點數的表示範圍以及小數點的實際位置;

數符表示正負,尾數的數值表示浮點數的精度。

浮點數規格化:

先看門見山講一下什麼叫規格化。

規格化規定尾數的最高數字必須是乙個有效值。

通過以上的閱讀,我們可以發現,要想讓精度最大化,那麼我們就需要讓尾數部分盡可能的儲存有效的數字。

比如說對於這兩個數(二進位制)

這兩個數是相等的,但是第二個數明顯可以在尾數上少儲存一位\(0\),所以這時候我們可以對浮點數進行規格化,讓他能表示更高的精度。

所謂規格化,是指通過一定的操作改變浮點數的尾數和階碼的大小,讓浮點數(非0)的尾數在最高位保證是乙個有效值。

有如下兩種方法:

那麼規格化的浮點數的尾數的範圍就是\(\frac\leq |m|\leq 1\)。

分析:負數:

假設用補碼來表示尾數:

負數:按照\(ieee754\)標準,浮點數表示格式如下:

為了最大幅度的增大浮點數表示精度,我們尾數最高位如果為\(1\)我們將其隱藏。舉個例子,假如說尾數是\(1011\),那麼我們儲存\(011\)。

\(float\)和\(double\)都是滿足\(ieee754\)標準的浮點數。

階碼以移碼形式存在。對於短浮點數\(float\),偏置值為\(127\),對於長浮點數\(double\),偏置值為\(1023\)。

那麼可以這麼求:我先將\(e\)的看成補碼形式求出其值,然後減去\(127/1023\)就是他的移碼代表的值。

浮點數運算需要將階碼運算和尾數運算分隔開。且分成以下幾步:

接下來一一分析。

對階:對階的目的是讓兩個運算元階碼相等。原則是小階向大階看齊的方法。將階碼小的數尾數右移,階碼加一知道階碼相等。當然因為右移需要捨棄資料,所以精度會受影響。

規格化:

捨入:溢位判斷:

最後一步需要判斷溢位。

在浮點數規格化部分已經知道尾數雙符號位出現\(01,10\),並不表示溢位,將此數右規即可。

浮點數的溢位是由階碼決定的。雙符號階碼出現\(01/10\),這時候就溢位了。

2 3 浮點數的表示與運算

返回目錄 計算機組成原理筆記目錄 2019 王道考研 2.3 浮點數的表示與運算 本節主要內容 1.基本格式 2.規格化 3.表示範圍 4.ieee754標準 5.浮點數的加減運算 6.浮點數的強制型別轉換 1.基本格式 2.規格化 規定尾數的最高數字必須是乙個有效值 1.左規 當浮點數運算的結果為...

資料運算 浮點數表示與加減運算

由於浮點數尾數的小數點均固定在第一位數值前,可以預見浮點數的運算實質上是定點數運算。但是由於階碼的不同,尾數對應小數點位置實際是不同的,需要通過轉化使小數點對齊後,才能直接進行加減運算。浮點數加減運算大致可以分為如下幾步 對階 使兩小數點位置對齊 尾數運算 尾數進行加減運算 規格化 為增加有效數字尾...

浮點數的表示

在定點數表示中存在的乙個問題是,難以表示數值很大的資料和數值很小的資料。例如,電子的質量 9 10 28克 和太陽的質量 2 1033克 相差甚遠,在定點計算機中無法直接表示,因為小數點只能固定在某乙個位置上,從而限制了資料的表示範圍。為了表示更大範圍的資料,數學上通常採用科學計數法,把資料表示成乙...