32位短浮點數計算

2021-08-08 04:04:32 字數 1383 閱讀 9247

下面是某種計算機的32位短浮點數格式 

_____________

|0 |1 8|9 31| 

|ms| e | m  |

其中,m 為用定點小數表示的尾數的絕對值,佔 23 位;ms 是尾數的符號位,佔1 位; ms 和 m 一起表示尾數。e 為用定點整數表示的階碼,佔 8 位。若機器表示中取階碼的基數為 2 ,求採用下列五種不同編碼方式時,浮點數 -123625e-3 (隱含基數為 10 )規格化後的機器碼: 

階碼用補碼方式、尾數用原碼方式時,為__(41)__; 

階碼用補碼方式、尾數用反碼方式時,為__(42)__; 

階碼用移碼方式、尾數用原碼方式時,為__(43)__; 

階碼用移碼方式、尾數用補碼方式時,為__(44)__; 

階碼用移碼方式、尾數用反碼方式時,為__(45)__; 

(41)、(42):a.110000111 00001000l10000000000000 

b.100000111 00001000l0ll11111111111 

c.110000111 11110000l0ll11111111111 

d.100000111 111l0ll1010000000000000 

(43)、(44):a.110000111 11110111010000000000000 

b.100000111 00001000110000000000000 

c.110000111 00001000110000000000000 

d.100000111 00001000l0ll11111111111 

(45):a.110000111 111l0ll1010000000000000 

b.100000111 00001000110000000000000 

c.100000111 11110000l0ll11111111111 

d.110000111 00001000l0ll11111111111 

浮點數-123625e-3 (隱含基數為 10 ) 代表 -123625 * 10^-3 = -123.625 

將123.625(先不帶上「-」號)轉化為二進位制表示為:1111011.101

將小數點一直移到最高位變成0.1111011101,一共向左移了7位,因為計算機裡浮點數

的基數為2,所以1111011.101 = 0.1111011101 * 2^7

然後把1111011101拿出來在後面補零,一直補夠到23位為止。這樣就變成11110111010000000000000。

這個就是題中所說的m值。因為此浮點數為負數,所以這個浮點數的原碼表示九應該是

100000111 11110111010000000000000。

剩下的就通過原碼,補碼,反碼,移碼之間的轉換就可以求得。

浮點數計算

bigdecimal工具類封裝 public class bigdecimaltool 提供精確的減法運算。param v1 被減數 param v2 減數 return 兩個引數的差 public static double sub double v1,double v2 public stati...

浮點數進行計算

public static void main string args 為什麼會出現這種情況?計算機採用二進位制進行計算,有些資料可以用二進位制表示。如0.5 1 2 2 1 但是有些不行,如0.1,這就好像1 3用十進位制無法準確的表示。計算機採用機器語言來表示數值,即二進位制 名稱意義 原碼正數...

104,101規約中的短浮點數

首先,無論是短浮點數還是歸一化值,都只是資料傳輸兩方規定的一種傳輸方式。比如要傳輸10進製的100,雙方規定以短浮點數形式傳輸,則報文就會按短浮點數的規則進行改變,解析的時候,按短浮點數的規則將其還原為100。也就是說,在傳輸時,報文並不是0x64.目前,104,101中,短浮點數都是4個位元組。歸...