IEEE中的浮點編碼計算

2021-07-11 10:57:35 字數 993 閱讀 5613

float型別在記憶體中佔4位元組,最高位表示符號位,剩下31位,從右向左取8位用於表示指數,其餘用於表示尾數

在進行二進位制轉化前,需要進行科學記數法轉換,具體步驟如下

1.看符號位,正數為0,負數為1

2.將數轉化為相應的二進位制數

3.用科學記數法轉化為相應的形式 如:1.*******2^n()

4.n為指數,加上127

5..轉化後用二進位制拼接寫出

舉個例子

1.是正數,符號位為0

2.12.25的二進位制數為1100.01

3.用科學記數法表示為  1.10001*2^3(整數部分為1100,小數部分為01,小數點向左移動,每移動一次加一,遇1停止 即為n的演算法)

可得  指數n為3,尾數部分為10001

4.指數n加上127         3+127=130轉化為二進位制為10000010

5.尾數字為10001000000000000000000(當不足23位時,低位補0填充)

拼接後為0 10000010 10001000000000000000000

當數為負數也是同樣的道理

注:1.  為什麼要加127呢,十進位制127用二進位制表示數01111111,ieee碼規定指數域小於01111111為負數,大於為正數,所以01111111為0

還有可能出現無窮的情況,小數部分是個無窮值,比如1.3f,小數部分轉化為二進位制為無窮的,尾數部分無法儲存完,只儲存23位的,由於在轉化為二進位制的時候捨棄了部分的值,所以取得值為近似值,這就解釋了浮點數值是否為0時,要做乙個區間比較而非等值比較,具體**如下:

float ftemp =0.0001f

if(ffloat >= -ftemp && ffloat <=ftemp)

計算機IEEE754轉浮點數

前幾天進行對乙個模組的研究,發現他串列埠傳輸過來的是16進製制數,而我們需要浮點數值,顯然需要一定的轉換方式,一開始我還以為是需要特殊的計算方法,後來這才接觸到了ieee這個浮點數的儲存方法 之前我的老師也沒接觸過這個,但是這是乙個儲存標準,以後用處應該會很多 eee 754 標準是ieee二進位浮...

IEEE制定的浮點數格式

ieee制定的浮點數格式 鑑於有人問到在c語言中float和double型態的儲存格式的問題,所以我就在這邊獻醜一翻,講講我所了解的部份,如有任何錯誤,請各位大哥多多指教.ieee制定之浮點數格式說明 float型態 用4個bytes儲存,也就是32 bits.各個bit的用途如下 bit 31 2...

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...