短浮點格式
㈠ 試將二進制數(-0.1101)用IEEE短浮點數格式表示出來
解:0 .1101 = 1 .101 × 1/2 。(規格化)
符號位= 1 。
階碼= 127( 32位短浮點數偏置值)+(- 1)(階碼 ) = 126 。
1 ,01111110 ,10100000000000000000000 。
結果= BF500000H 。
㈡ (-0.1101)是個二進制數,用IEEE 754短實數浮點格式表示!
半精度浮點數保存的位元組格式如下:
地址:+0 +1
內容:SEEE EEMM MMMM MMMM
根據IEEE浮點數的定義,將上述二進制數規格化:
(-0.1101)2
>-1.101 * (2^-1)
符號S為負,等於1 B;
指數EEEEE為-1+16=15,等於01111 B;(半精度)
尾數為1010000000 B;(半精度)
合成後為
1 01111 10 1000 0000 (半精度) =BE80 H
㈢ 浮點數格式是什麼
為便於軟體的移植,浮點數的表示格式應該有統一標准(定義)。1985年IEEE(Institute of Electrical and Electronics Engineers)提出了IEEE754標准。該標准規定基數為2,階碼E用移碼表示,尾數M用原碼表示,根據原碼的規格化方法,最高數字位總是1,該標准將這個1預設存儲,使得尾數表示範圍比實際存儲的一位。實數 的IEEE754標準的浮點數格式為:
具體有三種形式:
IEEE754三種浮點數的格式參數
類型 存儲位數 偏移值
數符(s) 階碼(E) 尾數(M) 總位數 十六進制 十進制
短實數(Single,Float) 1位 8位 23位 32位 0x7FH +127
長實數(Double) 1位 11 位 52位 64位 0x3FFH +1023
臨時實數(延伸雙精確度,不常用) 1位 15位 64位 80位 0x3FFFH +16383
對於階碼為0或為255(2047)的情況,IEEE有特殊的規定:
如果 E 是0 並且 M 是0,這個數±0(和符號位相關) 如果 E = 2
㈣ 計算十進制數37.25的IEEE754短浮點數的十六進制格式;
單精度符點數的表示格式為:從高到低依次為1位符號位,8位指數位,23位小數位。
首先把浮點數按二進制形式表示(以下過程不要想得太復雜):
-3.125
=
-11.001
首先把小數點往左移,直到小數點的左邊只有一個「1」為止。該例中就是左移一位,變成-1.1001
因為小數位是23位,所以現在把小數點的右邊「1001」往後被0,直到補夠23位為止,也就是要補19個0,變成:10010000000000000000000
現在計算指數位。剛才說是小數點左移,直到左邊只有一個「1」為止。但是如果浮點數本身是小於1的,比如0.125用二進製表示是0.001,此時應該右移3位才對。這種情況下把「右移3位」看成是「左移-3位」,指數位的計算方法就是用127加上左移的位數。該例中因為左移了一位,所以指數位是128.注意,原先小數點左邊的還剩下一個「1」是沒用的,指數位就是127加上左移位數。用二進製表示,指數位是1000000.
因為-3.125是個負數,所以符號位為1.因此,-3.125的二進制形式是:
1
10000000
10010000000000000000000
寫成十六進制是:c0480000
在程序里驗證下:
float
f
=
-3.125f;
int
a
=
(int&)f;
cout<<
hex
<<
a
<
評論
0
0
載入更多
㈤ 怎麼將短浮點數00111111 00010000 00000000 00000000轉換成十進制
浮點數保存的位元組格式如下:
地址 +0 +1 +2 +3
內容 SEEE EEEE EMMM MMMM MMMM MMMM MMMM MMMM
這里
S 代表符號位,1是負,0是正
E 偏移127的冪,二進制階碼=(EEEEEEEE)-127。
M 24位的尾數保存在23位中,只存儲23位,最高位固定為1。此方法用最較少的位數實現了
較高的有效位數,提高了精度。
零是一個特定值,冪是0 尾數也是0。
浮點數-12.5作為一個十六進制數0xC1480000保存在存儲區中,這個值如下:
地址 +0 +1 +2 +3
內容0xC1 0x48 0x00 0x00
浮點數和十六進制等效保存值之間的轉換相當簡單。下面的例子說明上面的值-12.5如何轉
換。
浮點保存值不是一個直接的格式,要轉換為一個浮點數,位必須按上面的浮點數保存格式表
所列的那樣分開,例如:
地址 +0 +1 +2 +3
格式 SEEE EEEE EMMM MMMM MMMM MMMM MMMM MMMM
二進制 11000001 01001000 00000000 00000000
十六進制 C1 48 00 00
從這個例子可以得到下面的信息:
符號位是1 表示一個負數
冪是二進制10000010或十進制130,130減去127是3,就是實際的冪。
尾數是後面的二進制數10010000000000000000000
在尾數的左邊有一個省略的小數點和1,這個1在浮點數的保存中經常省略,加上一個1和小數
點到尾數的開頭,得到尾數值如下:
1.10010000000000000000000
接著,根據指數調整尾數.一個負的指數向左移動小數點.一個正的指數向右移動小數點.因為
指數是3,尾數調整如下:
1100.10000000000000000000
結果是一個二進制浮點數,小數點左邊的二進制數代表所處位置的2的冪,例如:1100表示
(1*2^3)+(1*2^2)+(0*2^1)+(0*2^0)=12。
小數點的右邊也代表所處位置的2的冪,只是冪是負的。例如:.100...表示(1*2^(-1))+
(0*2^(-2))+(0*2^(-2))...=0.5。
這些值的和是12.5。因為設置的符號位表示這數是負的,因此十六進制值0xC1480000表示-
12.5。
㈥ c語言中的字元型,短整型,整型,長整型,浮點型,都是什麼,具體格式都是什麼
char 字元型
short 短整型
int整形
long長整型
float(單精度),double(雙精度)浮點型
㈦ 高分求-1000.5的二進制,轉換成 短浮點數格式 的過程
1 10001000 11110100010000000000000
將1000.5化成二進制為1111101000.1;
將1111101000.1的小數點向左移9位使之變為大於1、小於2的小數1.1111010001;
將1.1111010001中的1.刪除,並在1111010001的右側用0補齊23位形成尾數11110100010000000000000;
恢復時小數點要向右移9位,所以階碼值為+9即1001,用移碼表示為127+9=136即10001000;
題設是負數,所以符號位取1;
將符號、階碼、尾數的二進制依次連寫起來生成-1000.5的二進制浮點表達。
㈧ 若採用IEEE754標準的32位短浮點數格式十進制數100.5寫成浮點數
0 10000101 10010010000000000000000
㈨ -34.5的ieee754短浮點數的表示方式
-34.5的IEEE754短浮點數的表示方式.
34.5的二進制數:2^5+2^1+2^(-1) = 100010.1
1.M形式為: 1.000101*2^5
得S=1, e=5 E=101+01111111 = 10000100 M=000101
所以儲存格式為:1 10000100 000101000000000000000000
㈩ 用IEEE754短浮點數格式表示-365.59375
32位浮點數表示:
-365.59375: 0xC3B6CC00