青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Prayer

在一般中尋求卓越
posts - 1256, comments - 190, trackbacks - 0, articles - 0
  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

作者: jillzhang
聯(lián)系方式:jillzhang@126.com

本文為原創(chuàng),轉(zhuǎn)載請保留出處以及作者, 謝謝

    C語言和C#語言中,對于浮點(diǎn)類型的數(shù)據(jù)采用單精度類型(float)和雙精度類型(double)來存儲,float數(shù)據(jù)占用32bit, double數(shù)據(jù)占用64bit,我們在聲明一個(gè)變量float f= 2.25f的時(shí)候,是如何分配內(nèi)存的呢?如果胡亂分配,那世界豈不是亂套了么,其實(shí)不論是float還是double在存儲方式上都是遵從IEEE的規(guī)范 的,float遵從的是IEEE R32.24 ,而double 遵從的是R64.53。

    無論是單精度還是雙精度在存儲中都分為三個(gè)部分:

符號位(Sign) : 0代表正,1代表為負(fù)
指數(shù)位(Exponent):用于存儲科學(xué)計(jì)數(shù)法中的指數(shù)數(shù)據(jù),并且采用移位存儲
尾數(shù)部分(Mantissa):尾數(shù)部分
 其中float的存儲方式如下圖所示:

 

而雙精度的存儲方式為:

 

 

    R32.24和R64.53的存儲方式都是用科學(xué)計(jì)數(shù)法來存儲數(shù)據(jù)的,比如8.25用十進(jìn)制的科學(xué)計(jì)數(shù)法表示就為:8.25*,而120.5可以表示為:1.205*, 這些小學(xué)的知識就不用多說了吧。而我們傻蛋計(jì)算機(jī)根本不認(rèn)識十進(jìn)制的數(shù)據(jù),他只認(rèn)識0,1,所以在計(jì)算機(jī)存儲中,首先要將上面的數(shù)更改為二進(jìn)制的科學(xué)計(jì)數(shù) 法表示,8.25用二進(jìn)制表示可表示為1000.01,我靠,不會連這都不會轉(zhuǎn)換吧?那我估計(jì)要沒轍了。120.5用二進(jìn)制表示為:1110110.1用 二進(jìn)制的科學(xué)計(jì)數(shù)法表示1000.01可以表示為1.0001*,1110110.1可以表示為1.1101101*,任何一個(gè)數(shù)都的科學(xué)計(jì)數(shù)法表示都為1.xxx*, 尾數(shù)部分就可以表示為xxxx,第一位都是1嘛,干嘛還要表示呀?可以將小數(shù)點(diǎn)前面的1省略,所以23bit的尾數(shù)部分,可以表示的精度卻變成了 24bit,道理就是在這里,那24bit能精確到小數(shù)點(diǎn)后幾位呢,我們知道9的二進(jìn)制表示為1001,所以4bit能精確十進(jìn)制中的1位小數(shù)點(diǎn), 24bit就能使float能精確到小數(shù)點(diǎn)后6位,而對于指數(shù)部分,因?yàn)橹笖?shù)可正可負(fù),8位的指數(shù)位能表示的指數(shù)范圍就應(yīng)該為:-127-128了,所以 指數(shù)部分的存儲采用移位存儲,存儲的數(shù)據(jù)為元數(shù)據(jù)+127,下面就看看8.25和120.5在內(nèi)存中真正的存儲方式。

     首先看下8.25,用二進(jìn)制的科學(xué)計(jì)數(shù)法表示為:1.0001*

按照上面的存儲方式,符號位為:0,表示為正,指數(shù)位為:3+127=130 ,位數(shù)部分為,故8.25的存儲方式如下圖所示:

 

而單精度浮點(diǎn)數(shù)120.5的存儲方式如下圖所示:

 

那么如果給出內(nèi)存中一段數(shù)據(jù),并且告訴你是單精度存儲的話,你如何知道該數(shù)據(jù)的十進(jìn)制數(shù)值呢?其實(shí)就是對上面的反推過程,比如給出如下內(nèi)存 數(shù)據(jù):0100001011101101000000000000,首先我們現(xiàn)將該數(shù)據(jù)分段,0 10000 0101 110 1101 0000 0000 0000 0000,在內(nèi)存中的存儲就為下圖所示:

 

根據(jù)我們的計(jì)算方式,可以計(jì)算出,這樣一組數(shù)據(jù)表示為:1.1101101*=120.5

而雙精度浮點(diǎn)數(shù)的存儲和單精度的存儲大同小異,不同的是指數(shù)部分和尾數(shù)部分的位數(shù)。所以這里不再詳細(xì)的介紹雙精度的存儲方式了,只將120.5的最后存儲方式圖給出,大家可以仔細(xì)想想為何是這樣子的

 

下面我就這個(gè)基礎(chǔ)知識點(diǎn)來解決一個(gè)我們的一個(gè)疑惑,請看下面一段程序,注意觀察輸出結(jié)果

            float f = 2.2f;
            double d = (double)f;
            Console.WriteLine(d.ToString("0.0000000000000"));
            f = 2.25f;
            d = (double)f;
            Console.WriteLine(d.ToString("0.0000000000000"));

可能輸出的結(jié)果讓大家疑惑不解,單精度的2.2轉(zhuǎn)換為雙精度后,精確到小數(shù)點(diǎn)后13位后變?yōu)榱?.2000000476837,而單精度的 2.25轉(zhuǎn)換為雙精度后,變?yōu)榱?.2500000000000,為何2.2在轉(zhuǎn)換后的數(shù)值更改了而2.25卻沒有更改呢?很奇怪吧?其實(shí)通過上面關(guān)于兩 種存儲結(jié)果的介紹,我們已經(jīng)大概能找到答案。首先我們看看2.25的單精度存儲方式,很簡單 0 1000 0001 001 0000 0000 0000 0000 0000,而2.25的雙精度表示為:0 100 0000 0001 0010 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000,這樣2.25在進(jìn)行強(qiáng)制轉(zhuǎn)換的時(shí)候,數(shù)值是不會變的,而我們再看看2.2呢,2.2用科學(xué)計(jì)數(shù)法表示應(yīng)該為:將十進(jìn)制的小數(shù)轉(zhuǎn)換為二進(jìn)制的小數(shù) 的方法為將小數(shù)*2,取整數(shù)部分,所以0.282=0.4,所以二進(jìn)制小數(shù)第一位為0.4的整數(shù)部分0,0.4×2=0.8,第二位為0,0.8*2= 1.6,第三位為1,0.6×2 = 1.2,第四位為1,0.2*2=0.4,第五位為0,這樣永遠(yuǎn)也不可能乘到=1.0,得到的二進(jìn)制是一個(gè)無限循環(huán)的排列 00110011001100110011... ,對于單精度數(shù)據(jù)來說,尾數(shù)只能表示24bit的精度,所以2.2的float存儲為:

 

但是這樣存儲方式,換算成十進(jìn)制的值,卻不會是2.2的,應(yīng)為十進(jìn)制在轉(zhuǎn)換為二進(jìn)制的時(shí)候可能會不準(zhǔn)確,如2.2,而double類型的數(shù) 據(jù)也存在同樣的問題,所以在浮點(diǎn)數(shù)表示中會產(chǎn)生些許的誤差,在單精度轉(zhuǎn)換為雙精度的時(shí)候,也會存在誤差的問題,對于能夠用二進(jìn)制表示的十進(jìn)制數(shù)據(jù),如 2.25,這個(gè)誤差就會不存在,所以會出現(xiàn)上面比較奇怪的輸出結(jié)果。

本文屬作者原創(chuàng),只發(fā)布在博客園,希望大家在轉(zhuǎn)載的時(shí)候,注明出處和作者,謝謝。

注:本文在寫作過程中,參照了如下資料:

http://www.msdn.net/library/chs/default.asp?url=/library/CHS/vccore/html/_core_why_floating_point_numbers_may_lose_precision.asp

http://blog.csdn.net/ganxingming/archive/2006/12/19/1449526.asp

原文:http://blog.csdn.net/wuna66320/archive/2007/07/15/1691734.aspx

 

本文來自CSDN博客,轉(zhuǎn)載請標(biāo)明出處:http://blog.csdn.net/khler/archive/2007/08/17/1749102.aspx

Feedback

# re: 浮點(diǎn)數(shù)在計(jì)算機(jī)中存儲方式(轉(zhuǎn))   回復(fù)  更多評論   

2010-06-09 09:40 by McmillanTameka24
If you're in the corner and have no money to move out from that point, you will require to take the <a href="http://lowest-rate-loans.com">loans</a>. Because that would help you definitely. I get secured loan every single year and feel myself great just because of that.
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美在线日韩在线| 欧美激情 亚洲a∨综合| 久久精品99国产精品酒店日本| 一本一本久久a久久精品综合麻豆| 久久精品亚洲热| 久久久激情视频| 国产人成精品一区二区三| 亚洲一区二区三区免费观看| 亚洲欧美成人一区二区在线电影 | 亚洲精品欧洲| 一本大道久久a久久精品综合| 欧美激情a∨在线视频播放| 亚洲国产成人porn| 亚洲国产精品一区二区尤物区| 久久精品导航| 美女尤物久久精品| 最新国产の精品合集bt伙计| 欧美精品色综合| 亚洲精品视频中文字幕| 亚洲视频视频在线| 国产精品视频yy9299一区| 午夜精品理论片| 美女精品网站| 99精品热视频| 国产精品久久国产三级国电话系列 | 国产一区二区三区自拍| 久久久噜噜噜久久久| 欧美96在线丨欧| 一区二区欧美日韩| 国产欧美一级| 免播放器亚洲一区| 夜夜嗨av一区二区三区免费区| 亚洲欧美在线网| 国模精品娜娜一二三区| 猫咪成人在线观看| 亚洲美女在线视频| 欧美一区二区三区久久精品茉莉花 | 欧美黄色成人网| 中国成人亚色综合网站| 久久久久久久久岛国免费| 亚洲黑丝在线| 欧美日韩一卡| 久久都是精品| 日韩视频免费观看高清在线视频 | 亚洲精品久久久一区二区三区| 亚洲一区不卡| 激情亚洲成人| 欧美日韩一区二区在线视频| 小黄鸭视频精品导航| 亚洲国产高潮在线观看| 亚洲欧美美女| 亚洲精品国产精品乱码不99| 国产精品免费看| 欧美高清免费| 久久成人亚洲| 一区二区三区四区蜜桃| 久久综合影音| 欧美一级专区免费大片| 亚洲人成网站999久久久综合| 国产精品久久网站| 欧美国产在线电影| 欧美一区二区三区免费观看视频| 亚洲电影视频在线| 欧美一区免费视频| 99视频国产精品免费观看| 国产一区二区中文| 国产精品盗摄久久久| 欧美sm视频| 欧美一区二区观看视频| 一区二区三区视频在线| 亚洲国产一成人久久精品| 久久精品五月| 亚洲综合第一页| 亚洲精品国精品久久99热| 国产一区二区三区黄视频| 欧美日韩在线视频一区二区| 玖玖国产精品视频| 欧美一区二区三区四区在线| 一区二区三区四区蜜桃| 亚洲精品网址在线观看| 欧美激情亚洲自拍| 久久综合九色99| 久久成人人人人精品欧| 亚洲欧美成人网| 亚洲天堂视频在线观看| 亚洲精品视频二区| 亚洲韩日在线| 亚洲精品护士| 亚洲毛片在线看| 亚洲国产三级网| 亚洲第一区在线| 亚洲盗摄视频| 亚洲成人在线| 亚洲国产成人av| 尤物yw午夜国产精品视频| 国产一区在线看| 国产在线精品自拍| 韩国成人福利片在线播放| 国产一区二区三区黄视频| 国产亚洲一区二区在线观看| 国产伦理一区| 国产亚洲综合在线| 一色屋精品亚洲香蕉网站| 在线观看av不卡| 亚洲国产另类久久精品| 亚洲欧洲一区二区天堂久久| 亚洲激情成人| 一区二区日韩精品| 亚洲一区二三| 久久精品九九| 欧美jjzz| 亚洲精品久久久久中文字幕欢迎你| 亚洲人成网站精品片在线观看 | 亚洲欧美日韩成人| 西瓜成人精品人成网站| 欧美在线国产精品| 久久久久国内| 欧美激情2020午夜免费观看| 欧美日韩精品免费看| 国产精品成人一区二区网站软件| 国产精品日韩欧美| 国内揄拍国内精品久久| 亚洲高清激情| 中文亚洲免费| 久久久亚洲国产天美传媒修理工| 老色鬼久久亚洲一区二区| 亚洲激情二区| 亚洲欧美韩国| 免费不卡中文字幕视频| 欧美日韩亚洲视频| 国产午夜精品福利| 亚洲欧洲日本专区| 性色一区二区三区| 欧美成在线观看| 在线综合视频| 久久婷婷人人澡人人喊人人爽| 欧美肥婆在线| 国产一区二区0| 亚洲精品五月天| 欧美亚洲日本国产| 欧美a级理论片| 亚洲在线成人| 欧美国产精品劲爆| 国产精品亚洲片夜色在线| 亚洲国产精品一区二区三区| 香蕉成人伊视频在线观看| 欧美高清在线播放| 亚洲免费小视频| 欧美日韩国产成人在线观看 | 欧美激情成人在线| 国产啪精品视频| 夜夜狂射影院欧美极品| 久久国产综合精品| 亚洲理伦在线| 久久久综合免费视频| 国产精品久久久久久久久久ktv| 一区二区三区在线不卡| 亚洲影视综合| 亚洲电影欧美电影有声小说| 亚洲欧美日韩国产一区二区三区| 欧美韩日亚洲| 伊人精品在线| 久久精品视频在线观看| 一区二区三区不卡视频在线观看 | 久久精品人人爽| 国产精品中文字幕欧美| 亚洲精品在线看| 牛夜精品久久久久久久99黑人| 亚洲一区二区三区乱码aⅴ| 欧美激情1区| 亚洲国产日韩一级| 久久综合五月| 久久99伊人| 国产欧美一区二区精品性| 在线中文字幕不卡| 欧美国产精品一区| 久久久久久伊人| 国产一区二区欧美| 亚洲欧美在线磁力| 制服丝袜激情欧洲亚洲| 欧美日本视频在线| 亚洲免费福利视频| 亚洲成在人线av| 久久香蕉国产线看观看av| 国产日产欧美a一级在线| 午夜久久久久久| 中日韩在线视频| 欧美天堂亚洲电影院在线播放| 99视频精品全国免费| 亚洲精品久久久一区二区三区| 欧美韩日一区二区三区| 亚洲人成网在线播放| 亚洲国产一区二区三区a毛片| 欧美jjzz| 9人人澡人人爽人人精品| 亚洲毛片av| 欧美性大战久久久久久久蜜臀 | 永久555www成人免费| 六月婷婷一区| 麻豆91精品91久久久的内涵|