• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            天下

            記錄修行的印記

            C語言中float,double類型,在內(nèi)存中的結(jié)構(gòu)(存儲方式)

            C語言中float,double類型,在內(nèi)存中的結(jié)構(gòu)(存儲方式)
            從存儲結(jié)構(gòu)和算法上來講,double和float是一樣的,不一樣的地方僅僅是float是32位的,double是64位的,所以double能存儲更高的精度。

            任何數(shù)據(jù)在內(nèi)存中都是以二進(jìn)制(0或1)順序存儲的,每一個1或0被稱為1位,而在x86CPU上一個字節(jié)是8位。比如一個16位(2 字節(jié))的short int型變量的值是1000,那么它的二進(jìn)制表達(dá)就是:00000011 11101000。由于Intel CPU的架構(gòu)原因,它是按字節(jié)倒 序存儲的,那么就因該是這樣:11101000 00000011,這就是定點數(shù)1000在內(nèi)存中的結(jié)構(gòu)。

            目前C/C++編譯器標(biāo)準(zhǔn)都遵照IEEE制定的浮點數(shù)表示法來進(jìn)行float,double運算。

            這種結(jié)構(gòu)是一種科學(xué)計數(shù)法,用符號、指數(shù)和 尾數(shù)來表示,底數(shù)定為2——即把一個浮點數(shù)表示為尾數(shù)乘以2的指數(shù)次方再添上符號。

            下面是具體的規(guī)格:

            類型      符號位 階碼  尾數(shù)  長度
            float       1      8     23    32
            double    1     11    52    64
            臨時數(shù)     1     15    64    80

            由于通常C編譯器默認(rèn)浮點數(shù)是double型的,下面以double為例: 共計64位,折合8字節(jié)。

            由最高到最低位分別是第63、62、61、……、0位: 最高位63位是符號位,1表示該數(shù)為負(fù),0正; 62-52位,一共11位是指數(shù)位; 51-0位,一共52位是尾數(shù)位。

            按照IEEE浮點數(shù)表示法,下面將把double型浮點數(shù)38414.4轉(zhuǎn)換為十六進(jìn)制代碼。

            把整數(shù)部和小數(shù)部分開處理:整數(shù)部直接化十六進(jìn)制:960E。小數(shù)的處理: 0.4=0.5*0+0.25*1+0.125*1+0.0625*0+…… 實際上這永遠(yuǎn)算不完!這就是著名的浮點數(shù)精度問題。所以直到加上前面的整數(shù)部分算夠53位就行了(隱藏位技術(shù):最高位的1 不寫入內(nèi)存)。

            如果你夠耐心,手工算到53位那么因該是:38414.4(10)=1001011000001110.0110101010101010101010101010101010101(2)

            科學(xué)記數(shù)法為:1.001……乘以2的15次方。指數(shù)為15! 于是來看階碼,一共11位,可以表示范圍是-1024 ~ 1023。因為指數(shù)可以為負(fù),為了便于計算,規(guī)定都先加上1023,在這里, 15+1023=1038。

            二進(jìn)制表示為:100 00001110 符號位:正—— 0 ! 合在一起(尾數(shù)二進(jìn)制最高位的1不要): 01000000 11100010 11000001 11001101 01010101 01010101 01010101 01010101 按字節(jié)倒序存儲的十六進(jìn)制數(shù)就是: 55 55 55 55 CD C1 E2 40。

             

            posted on 2011-12-03 11:45 天下 閱讀(7678) 評論(0)  編輯 收藏 引用 所屬分類: C/C++

            <2012年8月>
            2930311234
            567891011
            12131415161718
            19202122232425
            2627282930311
            2345678

            導(dǎo)航

            統(tǒng)計

            常用鏈接

            留言簿(4)

            隨筆分類(378)

            隨筆檔案(329)

            鏈接

            最新隨筆

            搜索

            最新評論

            久久99热这里只有精品国产| 亚洲国产精品综合久久网络| 欧美黑人又粗又大久久久| 亚洲人成网亚洲欧洲无码久久 | 中文精品久久久久人妻| 伊人久久久AV老熟妇色| 国产精品久久亚洲不卡动漫| 国产精品热久久无码av| 国产精品99久久久精品无码| 国产午夜久久影院| 伊人久久无码中文字幕| 九九久久精品无码专区| 久久久久亚洲精品天堂| 热综合一本伊人久久精品| 国产一级持黄大片99久久| 欧美国产成人久久精品| 久久精品无码专区免费 | 国产精品成人99久久久久 | 久久久久亚洲AV片无码下载蜜桃| www性久久久com| 久久精品毛片免费观看| 日批日出水久久亚洲精品tv| 中文字幕亚洲综合久久2| 伊人久久综合成人网| 久久综合久久美利坚合众国| 国产精品久久久久一区二区三区| 久久丫精品国产亚洲av不卡 | 国产激情久久久久影院老熟女| 欧洲人妻丰满av无码久久不卡| 伊人色综合久久天天人守人婷| 精品人妻伦一二三区久久| 久久久久久a亚洲欧洲aⅴ| 91精品国产高清久久久久久io| 亚洲精品午夜国产VA久久成人| 国产欧美久久久精品影院| 久久伊人五月丁香狠狠色| 日本国产精品久久| 成人综合久久精品色婷婷| 亚洲精品午夜国产va久久| 久久中文字幕人妻丝袜| 无码人妻精品一区二区三区久久久|