<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 浮點(diǎn)型數據存儲方式分析

浮點(diǎn)型數據存儲方式分析

作者: 時(shí)間:2016-12-01 來(lái)源:網(wǎng)絡(luò ) 收藏
也就是說(shuō)我們可以認為float在小端CPU的編碼方式應該是:
31<-------------------------------------------------0
S(1bit)| E(8bits)| M(23bits) |
即:
-----------------------------------------------------
ADDR0+3ADDR0+2 ADDR0+1 ADDR0
SEEEEEEE EMMMMMMM MMMMMMMM MMMMMMMM
-----------------------------------------------------
S:表示浮點(diǎn)數正負,1為負數,0為正數。
E:指數加上127后的值的二進(jìn)制數
M: 24-bit的底數(只存儲23-bit)
需要注意,浮點(diǎn)數為0時(shí),指數和底數都為0,但此前的公式不成立。因為2的0次方為1,所以,0是個(gè)特例。當然,這個(gè)特例也不用認為去干擾,編譯器會(huì )自動(dòng)去識別。
這樣我們就可以知道前面這個(gè)題中輸出的結果啦,從上面的分析可以知道一個(gè)float型的數的基本存儲方式,按照上面的實(shí)現可以知道5.0的存儲方式為如下的形式:
01000000101000000000000000000000
從上面的這個(gè)存儲形式我們可以得到基本的整形數值時(shí)0x40A00000。進(jìn)而也就知道了4個(gè)bytes中的數值大小。
這是充分利用了聯(lián)合體的共享內存特性,我們改變程序如下所示:
#include
typedefuniontest
{
float a;
int i;
char c[4];
}Test;
int main()
{
Test t;
t.a = 5.0;
printf("%f",t.a);
printf("%d",t.i);
printf("%c,%c,%c,%c",t.c[3],t.c[2],t.c[1],t.c[0]);
t.i = 65;
printf("%f",t.a);
printf("%d",t.i);
printf("%c,%c,%c,%c",t.c[3],t.c[2],t.c[1],t.c[0]);
return 0;
}
根據上面的分析,可以比較方便的計算出結果如下所示:
當然這只是我在X86系統中的輸出,在大端系統中會(huì )是什么結果我不得而知,具體的要參看IEEE標準。
float類(lèi)型的數據是比較復雜的問(wèn)題,我將在后面認真研究,爭取早日解決各種問(wèn)題。

上一頁(yè) 1 2 下一頁(yè)

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>