色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 浮點(diǎn)型數(shù)據(jù)存儲(chǔ)方式分析

          浮點(diǎn)型數(shù)據(jù)存儲(chǔ)方式分析

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

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

          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉