• <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>
            春暖花開
            雪化了,花開了,春天來了
            posts - 149,comments - 125,trackbacks - 0

            今天在看面試寶典,注意到上面所說浮點數(shù)在內(nèi)存里和整數(shù)的存儲方式不同,但究竟有何不同呢?
            在網(wǎng)上搜了一下:
            http://blog.csdn.net/djsl6071/archive/2007/03/16/1531336.aspx中介紹了浮點數(shù)在內(nèi)存中的存儲方式,覺得不錯,轉(zhuǎn)過來。

            浮點數(shù)在內(nèi)存中的存儲方式

            浮點數(shù)保存的字節(jié)格式如下:

            地址        +0          +1           +2           +3
            內(nèi)容    SEEE EEEE   EMMM MMMM    MMMM MMMM    MMMM MMMM

            這里
            S 代表符號位,1是負,0是正
            E 偏移127的冪,二進制階碼=(EEEEEEEE)-127。
            M 24位的尾數(shù)保存在23位中,只存儲23位,最高位固定為1。此方法用最較少的位數(shù)實現(xiàn)了
            較高的有效位數(shù),提高了精度。

            零是一個特定值,冪是0 尾數(shù)也是0。

            浮點數(shù)-12.5作為一個十六進制數(shù)0xC1480000保存在存儲區(qū)中,這個值如下:
            地址 +0     +1     +2     +3
            內(nèi)容0xC1   0x48   0x00   0x00

            浮點數(shù)和十六進制等效保存值之間的轉(zhuǎn)換相當簡單。下面的例子說明上面的值-12.5如何轉(zhuǎn)
            換。
            浮點保存值不是一個直接的格式,要轉(zhuǎn)換為一個浮點數(shù),位必須按上面的浮點數(shù)保存格式表
            所列的那樣分開,例如:

            地址       +0           +1            +2            +3
            格式   SEEE EEEE    EMMM MMMM     MMMM MMMM     MMMM MMMM
            二進制  11000001     01001000      00000000      00000000
            十六進制   C1           48            00            00

            從這個例子可以得到下面的信息:
              符號位是1 表示一個負數(shù)
              冪是二進制10000010或十進制130,130減去127是3,就是實際的冪。
              尾數(shù)是后面的二進制數(shù)10010000000000000000000
            在尾數(shù)的左邊有一個省略的小數(shù)點和1,這個1在浮點數(shù)的保存中經(jīng)常省略,加上一個1和小數(shù)
            點到尾數(shù)的開頭,得到尾數(shù)值如下:
            1.10010000000000000000000

            接著,根據(jù)指數(shù)調(diào)整尾數(shù).一個負的指數(shù)向左移動小數(shù)點.一個正的指數(shù)向右移動小數(shù)點.因為
            指數(shù)是3,尾數(shù)調(diào)整如下:
            1100.10000000000000000000

            結(jié)果是一個二進制浮點數(shù),小數(shù)點左邊的二進制數(shù)代表所處位置的2的冪,例如:1100表示
            (1*2^3)+(1*2^2)+(0*2^1)+(0*2^0)=12。
            小數(shù)點的右邊也代表所處位置的2的冪,只是冪是負的。例如:.100...表示(1*2^(-1))+
            (0*2^(-2))+(0*2^(-2))...=0.5。
            這些值的和是12.5。因為設(shè)置的符號位表示這數(shù)是負的,因此十六進制值0xC1480000表示-
            12.5。

            關(guān)于多字節(jié)數(shù)據(jù)類型在內(nèi)存中的存儲問題


            int ,short 分別是4、2字節(jié)。他們在內(nèi)存中的存儲方式下面舉個例子說明。

            int data = 0xf4f3f2f1;
            其中低位存放在編址小的內(nèi)存單元,高位存放在編址高的內(nèi)存單元
            如下:
            地址:0x8000      0x8001    0x8002   0x8003
            數(shù)據(jù):   f1              f2            f3          f4
            根據(jù)IEEE在1985年制定的標準來處理浮點數(shù)
            單精度浮點數(shù)用4字節(jié),包括1位符號位s(整數(shù)為0,負數(shù)為1),8位指數(shù)位e,23位有效位f
            浮點型使用的是科學計數(shù)法,比如十進制的12345可以表示為1.2345 * 10^4(表示10的4次冪)
            用二進制表示為 1.1000000111001 * 2^13
            所以計算機中用浮點數(shù)表示12345這個十進制應(yīng)該是這樣的,s位為0,因為是正數(shù),指數(shù)位為13+127=140(127為單精度浮點數(shù)偏移值,為了表示只有小數(shù)部分的數(shù)),有效位為1000000111001
            計算的時候用 (-1)^s * 1.f * 2^(e-127) ,結(jié)果就是 1* 1.1000000111001 * 2^(140-127=13) ,和我們剛才表示的一樣
            還比如,十進制小數(shù)0.125轉(zhuǎn)換為二進制小數(shù)0.001可以表示為 1* 1.0 * 2^(124-127=-3)
            double,雙精度浮點數(shù)有1位符號位、11位指數(shù)位和52位有效數(shù)
            謝謝,和我找的資料差不多:)
            知道公式
            n=(-1)^s*m*2^e
            e=|E|-bias
            bias = 2^(k-1)-1(k為E的位數(shù))
            m=|1.M|


            知道12345在內(nèi)存中的10進制表示以后
            0x4640e400 = 0(100 0110 0)<100 0000 1110 0100 0000>
            括號中的數(shù)字為|E| = 140 所以e=140-127=13
            尖括號中的數(shù)字為m=|1.M|=|1.100000011100100|=1.506958008
            ok,
            代入公式n = (-1)^0*1.506958008*2^13=12345
            完工!!

             

            本文來自CSDN博客,轉(zhuǎn)載請標明出處:http://blog.csdn.net/edivista/archive/2009/06/07/4248794.aspx

             

            本文來自CSDN博客,轉(zhuǎn)載請標明出處:http://blog.csdn.net/edivista/archive/2009/06/07/4248794.aspx

            posted on 2009-10-02 20:51 Sandy 閱讀(1081) 評論(0)  編輯 收藏 引用 所屬分類: c++學習
            亚洲国产精品久久久久婷婷软件 | 色综合久久综精品| 久久国产亚洲精品| 欧美一级久久久久久久大片| 久久亚洲电影| 色综合久久久久综合99| 色婷婷综合久久久久中文字幕| 欧美久久一级内射wwwwww.| 无码任你躁久久久久久久| 亚洲精品NV久久久久久久久久 | 综合人妻久久一区二区精品| 日韩欧美亚洲综合久久| 亚洲香蕉网久久综合影视 | 日日躁夜夜躁狠狠久久AV| 国产精品免费福利久久| 99久久免费国产精品热| 免费观看成人久久网免费观看| 久久精品国产一区| 久久久久噜噜噜亚洲熟女综合 | 久久无码中文字幕东京热| 新狼窝色AV性久久久久久| 99久久免费国产精品热| 久久久WWW成人免费精品| 亚洲国产精品高清久久久| 久久九九亚洲精品| 狠狠色婷婷久久一区二区| 色综合合久久天天综合绕视看| 欧美无乱码久久久免费午夜一区二区三区中文字幕 | www亚洲欲色成人久久精品| 久久亚洲精品成人无码网站| 精品乱码久久久久久久| 午夜精品久久久久久久无码| 粉嫩小泬无遮挡久久久久久| 久久笫一福利免费导航| 9191精品国产免费久久| 91超碰碰碰碰久久久久久综合| 久久中文字幕一区二区| 99精品国产综合久久久久五月天| 久久棈精品久久久久久噜噜| 久久无码av三级| 四虎国产精品免费久久5151|