csapp讀書筆記之IEEE浮點表示法

2021-10-05 17:11:49 字數 1805 閱讀 1685

通過普通的定點表示法不能有效表示非常大的數字。例如表示式5*2^100是101後面跟了100個0,我們希望使用一種更簡潔高效的辦法表示,ieee浮點表示應運而生。

以下是將會出現的符號含義

v:你要表示的十進位制數。

s:符號位,0表示這是個正數,1表示這是個負數。

m:尾數,代表這個數的小數部分,它可能是0.*********x·····或1.************······

e:階碼,對這個數加權,這個權重是2^e

以及在推導時使用的一些約定俗成的過程量:

s:二進位制表示時的符號位,和s一樣。

f(frac):推導過程的小數字段,用它來推導m。

e(exp):推導過程的階碼字段,配合bias來推導e

bias:偏置量,保證0.******與1.******xx所代表的兩種格式中的平滑過度。

在計算機中這種表示法的佔位如圖:

前文提到的0.*********x和1.******xx實際上是兩種ieee表示的情況

規格化與非規格化:

1.規格化。

規格化表示的是階碼不全為0,也不全為1的情況,表示大部分情況,1.******並不是指代它大於1,而是指代它不那麼接近0,所以它的小數字段始終為1.******。

先明白如何將乙個規格化的浮點轉化為10進製小數。

我們用0 1001 111這個浮點數來示例,其中第乙個0是符號位,表明它是乙個

非負數,然後的1001是階碼字段e,然後111是尾數字段f,也就是二進位制小數。

首先求出bias偏置值,bias=

其中k是e的位數,在這裡k=4,因此bias等於7。

然後將e轉化為無符號數,這裡e是9

然後求e,在規格化中,e=e-bias,這裡e等於2

然後讓我們看看浮點數的計算公式

還要求個m,m使用小數字段f轉化的來,但要注意,因為規格化中預設小數字段為1.***x

所以在f中不表示這個「1」的存在,因此將小數字段轉化為十進位制小數後要加1。

在這個示例中,小數字段m為7/8+1=15/8。

然後把s,m,e帶入公式,就可以得到v=15/2=7.5。

2.非規格化

非規格化表示的是階碼全為0的情況,表示這個數十分接近0或者就是0的情況,此時小數字段表示的就是0.*********了

計算方法和規格化略有不同,但依然是將e,m計算出後帶入公式

e在非規格化中等於1-bias,m轉化為十進位制小數,這次不用對m做處理了。

然後將它們帶入公式。

3.特殊值

這個表示階碼全為1的情況,當小數字段全為0時,這個值表示無窮大,s=0是

正無窮,s=1是負無窮,當我們把兩個非常大的數相乘,或者除以零時,無窮

表示溢位的結果。當小數字段非0時,表示運算結果不能是實數或無窮,用nan表示,

比如求乙個負數平方根。

那麼如何將乙個十進位制數轉化為浮點表示呢,我們用100.25這個數做乙個示範,轉化結果為float型別浮點數:

首先將100.25化為二進位制定點表示:1100100.01

然後移動它的小數點,使其符合標準:1.10010001*2^6

把它和bias=127(float型別階碼字段為8位)

e=e-bias,所以e=bias+e=133,再把e轉化為二進位制數:10000101,這就是階碼字段

很明顯這是乙個規格化表示,所以把1.10010001小數點左側的1去了,得到10010001,這就是小數字段

然後把符號位,階碼字段,小數字段依次組合,得到01000010110010001,但我們要求的是float型別,所以要把位數補全到32位,在最後補17個0,就得到了100.25的float型別浮點數。

CSAPP讀書筆記1

匯流排 相當於一顆線連線在各個部分,在各個部分傳遞資訊 i o裝置 input和ouput,除了鍵鼠,還有顯示器,磁碟,可執行程式就放在磁碟上 主存 暫時儲存資料的,這裡我理解為記憶體,不知道行不行 處理器 cpu從記憶體讀取指令,執行操作,然後使其指向下一條指令 在i o中輸入.hello,暫存器...

CSAPP讀書筆記,其一

不是所有的書都需要寫筆記,比如 大全這種就是需要經常讀讀,結合專案自我體驗昇華。但是對於某些涉及大量細節,或者繁雜的邏輯的書,如果只是順序的往下讀,基本上只是過眼即忘,更好的方法是仔細的看一遍,認真的做完習題,然後自己再總結一下脈絡梗概。如果時間比較匆忙,習題沒時間做也最好認真的做筆記,腦子裡面有一...

csapp 002 讀書筆記

1.3 了解編譯系統如何工作是大有益處的 優化程式效能 理解鏈結時出現的錯誤 避免安全漏洞 系統的硬體組成 1 匯流排 以字為單位傳遞資訊,64位系統的字是8位元組。類似人類神經 2 io裝置 是系統與外部世界的聯絡通道,類似於人的五官 3 主存 臨時儲存裝置,在處理器執行程式時,用來存放程式和程式...