IEEE浮點表示法

2021-04-12 12:13:16 字數 1081 閱讀 2706

目錄:

1、簡介

2、float規格

3、轉換例子

內容:1、簡介

目前已知的c/c++編譯器都是按照ieee(國際電子電器工程師協會)制定的ieee浮點數表示法來進行運算的。

這種結構是一種科學表示法,用符號(+或-)、指數和尾數來表示,底數被確定為2。

所以在ieee浮點數表示法裡,乙個浮點數為尾數乘以2的指數次方再加上符號。

2、float規格

float 共計32位,4位元組

由最高到最低位分別是第31、30、29、……、0位,則:

31位是符號位,1表示該數為負,0反之。

30-23位,一共8位是指數字。

22-0位,一共23位是尾數字。

3、轉換例子

按照ieee浮點數表示法,將float型浮點數12345.0f轉換為二進位制。

處理不帶小數的浮點數時,直接將整數部轉化為二進位制表示:1 11100010 01000000 也可以這樣表示:11110001001000000.0

然後將小數點向左移,一直移到離最高位只有1位:1.11100010010000000 共左移了16位,

所以原數就等於:1.11100010010000000 * ( 2^16 )。可知尾數為1.11100010010000000,指數為16。

顯而易見,最高位永遠是1,所以這個1沒有必要保留。

這樣尾數的二進位制就變成了:11100010010000000

最後在尾數的後面補0,一直到補夠23位:11100010010000000000000

來看指數,一共8位,可以表示範圍是0 - 255的無符號整數,也可以表示-128 - 127的有符號整數。

因為指數是可以為負的,為了統一把十進位制的整數化為二進位制時,都先加上127。

這裡,我們的16加上127後就變成了143,二進位制表示為:10001111

12345.0f這個數是正的,所以符號位是0,那麼我們按照前面講的格式把它拼起來:

0  10001111 11100010010000000000000

符號 指數  尾數

即:01000111 11110001 00100000 00000000

析IEEE浮點數表示法

眾所周知,計算機中的所有資料都是以二進位制表示的,浮點數也不例外。然而浮點數的二進位制表示法卻不像定點數那麼簡單了。先澄清乙個概念,浮點數並不一定等於小數,定點數也並不一定就是整數。所謂浮點數就是小數點在邏輯上是不固定的,而定點數只能表示小數點固定的數值,具用浮點數或定點數表示某哪一種數要看使用者賦...

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

通過普通的定點表示法不能有效表示非常大的數字。例如表示式5 2 100是101後面跟了100個0,我們希望使用一種更簡潔高效的辦法表示,ieee浮點表示應運而生。以下是將會出現的符號含義 v 你要表示的十進位制數。s 符號位,0表示這是個正數,1表示這是個負數。m 尾數,代表這個數的小數部分,它可能...

IEEE的浮點數表示

ieee浮點標準用v 1 s m 2 e 由符號,尾數,階碼表示 32位單精度 單精度二進位制小數,使用32位儲存。1 8 23 位長 s exp fraction 31 30 23 22 0 位編號 從右邊開始為0 偏正值 127 64位雙精度 雙精度 二進位制小數,使用64位儲存。1 11 52...