• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    浮點(diǎn)類型有效位數(shù)計(jì)算與應(yīng)用分析

    2019-06-09 10:36:01肖紅德
    軟件導(dǎo)刊 2019年4期
    關(guān)鍵詞:存儲(chǔ)單元

    肖紅德

    摘 要:為弄清浮點(diǎn)類型數(shù)據(jù)在應(yīng)用中存在“異常”現(xiàn)象的原因,研究了浮點(diǎn)類型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式,得到與其在內(nèi)存中存儲(chǔ)規(guī)范一致的結(jié)果。分析浮點(diǎn)類型數(shù)據(jù)在內(nèi)存中存儲(chǔ)形式對(duì)應(yīng)的理論區(qū)間并進(jìn)行實(shí)驗(yàn)驗(yàn)證,得出浮點(diǎn)類型數(shù)據(jù)的精度(對(duì)于規(guī)范化浮點(diǎn)類型數(shù)據(jù),float類型有效位數(shù)為6~8位,double類型有效位數(shù)為15~17位),進(jìn)而對(duì)浮點(diǎn)類型數(shù)據(jù)在應(yīng)用中的一些異?,F(xiàn)象進(jìn)行合理解釋,比如“大數(shù)吃小數(shù)”、輸出格式控制以及輸出結(jié)果與預(yù)期不一致等。通過(guò)對(duì)浮點(diǎn)類型數(shù)據(jù)在計(jì)算機(jī)內(nèi)存中表達(dá)形式的理論分析和實(shí)驗(yàn)驗(yàn)證,實(shí)現(xiàn)對(duì)實(shí)際數(shù)據(jù)進(jìn)行離散化處理,為計(jì)算機(jī)內(nèi)存中的表示和相關(guān)計(jì)算帶來(lái)幫助。

    關(guān)鍵詞:浮點(diǎn)類型;有效位數(shù);存儲(chǔ)單元;數(shù)制轉(zhuǎn)換;不精確表示

    DOI:10. 11907/rjdk. 182282

    中圖分類號(hào):TP301文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1672-7800(2019)004-0050-07

    0 引言

    數(shù)據(jù)在計(jì)算機(jī)內(nèi)存中是以二進(jìn)制存放的[1-3]?;菊蚷nt類型在存儲(chǔ)單元中的存儲(chǔ)方式用整數(shù)補(bǔ)碼存放[1]。Visual c++6.0為每一個(gè)int型數(shù)據(jù)分配4個(gè)字節(jié)(32位)。對(duì)于整數(shù)補(bǔ)碼的求法有以下規(guī)定:一個(gè)正數(shù)的補(bǔ)碼是其二進(jìn)制形式;一個(gè)負(fù)數(shù)的補(bǔ)碼,應(yīng)先獲得其絕對(duì)值的二進(jìn)制形式,然后對(duì)其后所有二進(jìn)位按位取反,再加1[2]。十進(jìn)制轉(zhuǎn)換R進(jìn)制按照整數(shù)部分除R取余和小數(shù)部分乘R取整的方法進(jìn)行[4,5]。在存放int類型數(shù)據(jù)的存儲(chǔ)單元中,最左面一位用來(lái)表示符號(hào),如果該位為0,則表示數(shù)值為正;如果該位為1,則表示數(shù)值為負(fù)。

    浮點(diǎn)類型數(shù)據(jù)研究主要圍繞以下問(wèn)題進(jìn)行:①浮點(diǎn)類型在內(nèi)存中的表示形式規(guī)定;②浮點(diǎn)類型數(shù)據(jù)表示范圍;③浮點(diǎn)類型數(shù)據(jù)精度;④驗(yàn)證浮點(diǎn)類型數(shù)據(jù)和具體計(jì)算結(jié)果是否一致。

    對(duì)于問(wèn)題①,浮點(diǎn)類型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式有相關(guān)規(guī)定[1,3,6-19],其存儲(chǔ)形式與整型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式不同。浮點(diǎn)類型分為單精度浮點(diǎn)類型(float類型)和雙精度浮點(diǎn)類型(double類型)兩種。Visual C++6.0編譯軟件為float類型數(shù)據(jù)分配4個(gè)字節(jié),為double類型數(shù)據(jù)分配8個(gè)字節(jié),數(shù)值以規(guī)范化二進(jìn)制指數(shù)形式存放在存儲(chǔ)單元中。在存儲(chǔ)時(shí),系統(tǒng)將浮點(diǎn)類型數(shù)據(jù)分成小數(shù)部分和指數(shù)部分,分別存放。不論是float類型數(shù)據(jù)還是double類型數(shù)據(jù),存儲(chǔ)方式上都遵從IEEE規(guī)范,float類型數(shù)據(jù)遵從IEEE R32.24,而double類型數(shù)據(jù)遵從IEEER64.53[8]。

    對(duì)于問(wèn)題②,文獻(xiàn)[10]進(jìn)行了較為詳細(xì)的研究和分析。

    對(duì)于問(wèn)題③,文獻(xiàn)[9,20]進(jìn)行了相關(guān)浮點(diǎn)類型數(shù)據(jù)位數(shù)的理論計(jì)算和分析。

    對(duì)于問(wèn)題④,文獻(xiàn)[3,6]通過(guò)實(shí)驗(yàn)驗(yàn)證了浮點(diǎn)類型數(shù)據(jù)存儲(chǔ)格式在計(jì)算機(jī)內(nèi)存中的表示形式。

    在下文描述中,S表示符號(hào)位,E表示指數(shù)位,e表示指數(shù)部分的位數(shù),M表示尾數(shù)部分,B表示指數(shù)部分的偏移量(其值為B=[2e-1-1])。

    IEEE標(biāo)準(zhǔn)規(guī)定,無(wú)論是float類型數(shù)據(jù)還是double類型數(shù)據(jù)在存儲(chǔ)中都分為3個(gè)部分:①符號(hào)位S:float類型和double類型都占1位,0代表正,1代表負(fù);②指數(shù)位E:float類型占8位,double類型占11位,用于存儲(chǔ)指數(shù)數(shù)據(jù),并且采用移位存儲(chǔ),指數(shù)采用移碼表示(原來(lái)的實(shí)際指數(shù)值加上一個(gè)固定值),該固定值為B=[2e-1-1](表示偏移量,e為指數(shù)部分比特長(zhǎng)度,對(duì)于float類型,e=8,偏移量B=127;對(duì)于double類型,e=11,B=1 023)。指數(shù)位存儲(chǔ)的是一個(gè)無(wú)符號(hào)整數(shù),所以對(duì)于float類型,指數(shù)位E的取值范圍為0~255,其真正取值范圍為-127~128,對(duì)于double類型,指數(shù)位E的取值范圍為0~2 047,其真正取值范圍為-1 023~1 024;③尾數(shù)部分M:float類型占23位,double類型占52位。尾數(shù)采用原碼表示,用二進(jìn)制形式,整數(shù)部分為1,那么小數(shù)點(diǎn)前的1就沒(méi)有必要用一個(gè)比特位去存儲(chǔ),默認(rèn)已經(jīng)存在,稱為“隱藏位”。所以規(guī)定尾數(shù)部分在存儲(chǔ)時(shí)舍去第一個(gè)1,只存儲(chǔ)小數(shù)點(diǎn)之后的數(shù)字,好處是對(duì)于float類型,只保存23位小數(shù)信息,加上舍去的1,可以用來(lái)表示24個(gè)有效信息;對(duì)于double類型,可以用52位尾數(shù)部分表示53個(gè)有效信息。

    浮點(diǎn)類型在內(nèi)存中由高地址到低地址分別存儲(chǔ)符號(hào)位S、指數(shù)位E和尾數(shù)部分M。指數(shù)位E還分為3種情況:①指數(shù)位E不全為0,不全為1。這是一種規(guī)范化的浮點(diǎn)數(shù)形式,此時(shí)就用正常的計(jì)算規(guī)則,指數(shù)部分E的真實(shí)值就是其字面值減去偏移量,尾數(shù)部分M的值要加上最前面省去的整數(shù)1;②指數(shù)位E全為0。需要分兩種情況進(jìn)行處理,若尾數(shù)部分M全為0,則表示浮點(diǎn)數(shù)0,若尾數(shù)部分M不全為0,則表示非規(guī)范化浮點(diǎn)數(shù)形式,表示很小的浮點(diǎn)數(shù),并且指數(shù)實(shí)際值為-(B-1)。對(duì)于float類型,指數(shù)實(shí)際值為-126。對(duì)于double類型,指數(shù)實(shí)際值為-1 022,尾數(shù)部分表示實(shí)際小數(shù)部分,整數(shù)部分為0(即沒(méi)有“隱藏位”1);③指數(shù)位E全為1。當(dāng)尾數(shù)部分M全為0時(shí),表示±無(wú)窮大(取決于符號(hào)位),當(dāng)M不全為0時(shí),表示該數(shù)不是一個(gè)數(shù)(NaN)。

    本文主要研究C語(yǔ)言中浮點(diǎn)類型(包括單精度浮點(diǎn)類型float和雙精度浮點(diǎn)類型double)有效位數(shù)的計(jì)算、某個(gè)具體數(shù)值在內(nèi)存中的存儲(chǔ)形式、其所能表示的數(shù)據(jù)范圍以及在使用過(guò)程中的“反?!爆F(xiàn)象。在程序驗(yàn)證過(guò)程中,采用編譯軟件Visual C++6.0。

    1 數(shù)值存儲(chǔ)形式查看

    數(shù)值在內(nèi)存中的存儲(chǔ)形式,已有相關(guān)驗(yàn)證程序可以進(jìn)行查看[3,6,9,11,12]。在Intel CPU 架構(gòu)系統(tǒng)中,數(shù)據(jù)在內(nèi)存中的存放方式為小端模式(低字節(jié)存在低地址中,高字節(jié)存在高地址中)[3,21]。本文設(shè)計(jì)一個(gè)專門用來(lái)顯示某個(gè)變量在內(nèi)存中存儲(chǔ)形式以及按照指定形式進(jìn)行輸出的函數(shù)。

    具體實(shí)現(xiàn)過(guò)程為:先建立頭文件“show.h”,然后在頭文件中定義實(shí)現(xiàn)查看內(nèi)存的函數(shù)displaymemory。

    void displaymemory(void * a,int m,int n)

    {

    unsigned char *b=a,c,k[8]={1,2,4,8,16,32,64,128};?int i,j;?for(i=m-1;i>=0;i--)?{? ?c=*(b+i);? ?for(j=7;j>=0;j--)? ?{? ? ?printf("%2d",c/k[j]);? ? ?c=c%k[j];? ?}? ?printf("\n");?}

    switch(n)

    {

    case 0:printf("%d\n",*(int *)a);break;

    case 1:printf("%.20e\n",*(float *)a);break;

    case 2:printf("%.20e\n",*(double *)a);break;

    default:printf("Data error?。躰");

    }

    }

    其中,函數(shù)displaymemory 中3個(gè)形參含義如下:void *a表示數(shù)據(jù)在內(nèi)存中存儲(chǔ)的起始地址;int m表示需要查看的內(nèi)存地址字節(jié)數(shù);int n表示用何種格式符輸出以地址a開(kāi)始的數(shù)據(jù),如果n為0表示以d格式符輸出整數(shù),如果n為1表示以.20e格式符、指數(shù)形式輸出帶20位小數(shù)部分的float類型數(shù)據(jù),如果n為2表示以.20e格式符、指數(shù)形式輸出帶20位小數(shù)部分的double類型數(shù)據(jù)。

    2 浮點(diǎn)數(shù)范圍與有效位數(shù)

    2.1 浮點(diǎn)類型范圍

    田祎、樊景博[10]對(duì)浮點(diǎn)類型數(shù)據(jù)范圍進(jìn)行了研究。本文主要按照規(guī)范化浮點(diǎn)數(shù)和非規(guī)范化浮點(diǎn)數(shù)各自取值范圍分別進(jìn)行討論。

    規(guī)范化浮點(diǎn)數(shù)能夠表示的數(shù)其絕對(duì)值最大值為:對(duì)于float類型,指數(shù)位E為11111110,其表示的十進(jìn)制數(shù)為254-127=127,尾數(shù)部分M為全1,其對(duì)應(yīng)數(shù)據(jù)為[1.M*2127],所對(duì)應(yīng)的十進(jìn)制數(shù)約為[3.402 82*1038];對(duì)于double類型,指數(shù)位為11111111110,其表示的十進(jìn)制數(shù)為2 046-1 023=1 023,尾數(shù)部分M為全1,其對(duì)應(yīng)數(shù)據(jù)為[1.M*21 023],其所對(duì)應(yīng)的十進(jìn)制數(shù)約為[1.797 693 134 862 315 7*10308]。規(guī)范化浮點(diǎn)數(shù)能夠表示的絕對(duì)值最小非零數(shù)為:對(duì)于float類型,指數(shù)位E為00000001,表示的十進(jìn)制數(shù)為1-127=-126,尾數(shù)部分M為全0,對(duì)應(yīng)數(shù)據(jù)為[1*2-126],其所對(duì)應(yīng)的十進(jìn)制數(shù)約為[1.175 494 350 822 287 5*10-38];對(duì)于double類型,指數(shù)位為00000000001,表示的十進(jìn)制數(shù)為1-1 023=????? -1 022,尾數(shù)部分為全0,對(duì)應(yīng)數(shù)據(jù)為[1*2-1022],其所對(duì)應(yīng)的十進(jìn)制數(shù)約為[2.225 073 858 507 201 2*10-308]。浮點(diǎn)類型數(shù)據(jù)0.0在內(nèi)存中的表示形式為:指數(shù)位E和尾數(shù)部分M全為0。

    非規(guī)范化浮點(diǎn)數(shù)指數(shù)位E為全0,尾數(shù)部分M不全為0。非規(guī)范化浮點(diǎn)數(shù)能夠表示的數(shù)其絕對(duì)值最大值為:對(duì)于float類型,指數(shù)位E為全0,尾數(shù)部分M為全1,此時(shí)沒(méi)有“隱藏位”1,指數(shù)部分的值為-126,其對(duì)應(yīng)數(shù)據(jù)為[0.M*2-126],十進(jìn)制數(shù)約為[1.175 494*10-38];對(duì)于double類型,指數(shù)位E為全0,尾數(shù)部分M為全1,此時(shí)沒(méi)有“隱藏位”1,指數(shù)部分的值為-1 022,其對(duì)應(yīng)數(shù)據(jù)為[0.M*2-1 022],十進(jìn)制數(shù)約為[2.225 073 858 507 200 9*10-308]。對(duì)于非規(guī)范化浮點(diǎn)數(shù),其能夠表示的非零數(shù)的絕對(duì)值最小值為:對(duì)于float類型,指數(shù)位E為全0,尾數(shù)部分M最后一位為1,其余全為0,此時(shí)沒(méi)有“隱藏位”1,指數(shù)部分的值為-126,其對(duì)應(yīng)數(shù)據(jù)為[1*2-23*2-126],十進(jìn)制數(shù)約為[1.401 298 464 324 817 1*][10-45];對(duì)于double類型,指數(shù)位E為全0,尾數(shù)部分M最后一位為1,其余全為0,此時(shí)沒(méi)有“隱藏位”1,指數(shù)部分值為-1 022,其對(duì)應(yīng)數(shù)據(jù)為[1*2-52*2-1 022],十進(jìn)制數(shù)約為[4.940 656 458 412 465 4*10-324]。非規(guī)范化浮點(diǎn)數(shù)所表示的數(shù)都很小,并且其有效數(shù)字的位數(shù)可能為0。

    由浮點(diǎn)類型數(shù)據(jù)有關(guān)形式可知,當(dāng)指數(shù)位E全為1、尾數(shù)部分M全為0時(shí),表示無(wú)窮大;當(dāng)指數(shù)位E為全1、尾數(shù)部分M不全為0時(shí),表示不是一個(gè)數(shù)(NaN)。通過(guò)驗(yàn)證可知,對(duì)于float類型的數(shù)據(jù),當(dāng)數(shù)據(jù)范圍為[3.40282357e38,1.797693134862315e308]時(shí),表示無(wú)窮大,驗(yàn)證程序1如下:

    #include

    #include"show.h"

    void main()

    {

    float b1=3.40282356e38,b2=3.40282357e38,b3=1.797693134862315e308;

    displaymemory(&b1,4,2);

    displaymemory(&b2,4,2);

    displaymemory(&b3,4,2);

    }

    由驗(yàn)證結(jié)果可知,b1為最大的規(guī)范化float類型數(shù)據(jù),b2和b3在內(nèi)存中的表示形式相同,即指數(shù)位E為全1,尾數(shù)部分M為全0。

    對(duì)于double類型的數(shù)據(jù),如果超過(guò)規(guī)范化雙精度浮點(diǎn)類型限制,編譯時(shí)會(huì)提示“constant too big”錯(cuò)誤,其無(wú)窮大能夠表示的數(shù)值范圍無(wú)法驗(yàn)證。

    由驗(yàn)證程序1可得出以下結(jié)論:float類型在計(jì)算過(guò)程中都是按照double類型進(jìn)行處理的,如果表示的數(shù)超過(guò)了規(guī)范化float類型數(shù)據(jù)范圍并且在double類型數(shù)據(jù)范圍內(nèi),則按照f(shuō)loat類型中的無(wú)窮大進(jìn)行處理;如果超過(guò)了double類型限制,則visual c++6.0編譯系統(tǒng)認(rèn)為輸入的數(shù)據(jù)太大,不能進(jìn)行處理。

    2.2 浮點(diǎn)類型有效位數(shù)

    張宗杰、張明亮[9]從相對(duì)誤差角度對(duì)浮點(diǎn)數(shù)的有效位數(shù)進(jìn)行了解讀,逯鴻友[20]對(duì)不同進(jìn)制之間轉(zhuǎn)換位數(shù)的確定給出了理論推導(dǎo)。本文從尾數(shù)的取值范圍和相對(duì)誤差兩方面進(jìn)行分析,對(duì)該問(wèn)題進(jìn)行解釋和說(shuō)明。

    浮點(diǎn)數(shù)在內(nèi)存中的存放是離散的,而不是連續(xù)的,即對(duì)于每一個(gè)浮點(diǎn)數(shù)來(lái)說(shuō),其在內(nèi)存中表示的一個(gè)浮點(diǎn)類型數(shù)據(jù)都對(duì)應(yīng)一個(gè)區(qū)間。因此,浮點(diǎn)類型數(shù)據(jù)是有限個(gè)。由浮點(diǎn)數(shù)的存儲(chǔ)規(guī)范可知:對(duì)于非負(fù)float類型數(shù)據(jù)來(lái)說(shuō),其個(gè)數(shù)為[255*223];對(duì)于非負(fù)double類型數(shù)據(jù)來(lái)說(shuō),其個(gè)數(shù)為[2 047*252][8]。

    對(duì)于規(guī)范化浮點(diǎn)類型,按照其能夠表示的二進(jìn)制位數(shù),可以計(jì)算出其最大相對(duì)誤差:對(duì)于float類型,當(dāng)尾數(shù)部分M為0全時(shí),取最大相對(duì)誤差值約為[0.5*2-23=2-24=][5.960 5e-08],當(dāng)尾數(shù)部分M為全1時(shí),取最小相對(duì)誤差值約為[0.5*0.5*2-23=2.980 2e-08];對(duì)于double類型,當(dāng)尾數(shù)部分為全0時(shí),取最大相對(duì)誤差值為[0.5*2-52=2-53],約為1.110 2e-16,當(dāng)尾數(shù)部分M為全1時(shí),取最小相對(duì)誤差值為[0.5*0.5*2-52],約為5.551 1e-17[8]。由相對(duì)誤差的計(jì)算結(jié)果可知,對(duì)于float類型,其有效數(shù)字位數(shù)最多為8,對(duì)于double類型,其有效數(shù)字位數(shù)最多為17。而對(duì)于非規(guī)范化浮點(diǎn)類型,其有效數(shù)字的位數(shù)是不同的,對(duì)于float類型,有效數(shù)字的位數(shù)為0~8,對(duì)于double類型,有效數(shù)字的位數(shù)為0~17,總體來(lái)說(shuō),有效數(shù)字的位數(shù)隨著尾數(shù)部分有效二進(jìn)制位增加而增加。

    對(duì)有效數(shù)字位數(shù)的確定,主要與相對(duì)誤差的大小有關(guān)。由相對(duì)誤差計(jì)算結(jié)果可知,對(duì)于float類型,相對(duì)誤差主要影響從最高位開(kāi)始的數(shù)字的第8位和第9位數(shù)字,前面7位數(shù)字在進(jìn)行四舍五入進(jìn)位前都是準(zhǔn)確的,有效數(shù)字的位數(shù)需要分以下3種情況進(jìn)行判斷:①如果內(nèi)存中表示為同一個(gè)float類型數(shù)據(jù)的取值范圍在第8位數(shù)字處相同,并且第9位數(shù)字取值范圍進(jìn)行四舍五入后與第8位數(shù)字相同,則該float類型數(shù)據(jù)有8位有效數(shù)字;②如果內(nèi)存中表示為同一個(gè)float類型數(shù)據(jù)的取值范圍在第8位數(shù)字處不相同,并且在同一個(gè)區(qū)域(0~4或者5~9),則該float類型數(shù)據(jù)有7位有效數(shù)字;③如果內(nèi)存中表示為同一個(gè)float類型數(shù)據(jù)的取值范圍在第8位數(shù)字處不相同,并且其取值范圍跨越兩個(gè)不同區(qū)域(0~4或者5~9),則第8位數(shù)字取值范圍影響到第7位數(shù)字的變化,并且變化后的值不同,則該float類型數(shù)據(jù)有6位有效數(shù)字。

    從以上判斷過(guò)程可知,對(duì)于float類型,其有效數(shù)字的位數(shù)為6~8位。對(duì)于double類型,通過(guò)類似分析可知,其有效數(shù)字的位數(shù)為15~17位。

    2.3 規(guī)范化浮點(diǎn)類型數(shù)據(jù)表示區(qū)間

    2.3.1 理論分析

    有關(guān)規(guī)范化浮點(diǎn)類型數(shù)據(jù)表示區(qū)間的問(wèn)題,在文獻(xiàn)[1,7-11]中有相關(guān)說(shuō)明,主要圍繞浮點(diǎn)數(shù)不能精確表示一個(gè)數(shù)從離散角度進(jìn)行了解釋。本文主要從浮點(diǎn)類型存儲(chǔ)形式對(duì)應(yīng)的理論數(shù)據(jù)范圍著手進(jìn)行研究。

    使用Fmax表示float類型數(shù)據(jù)在內(nèi)存中存儲(chǔ)形式表示數(shù)據(jù)的最大偏移程度,使用Dmax表示double類型在內(nèi)存中存儲(chǔ)形式表示數(shù)據(jù)的最大偏移程度(對(duì)于給定的指數(shù)位E,無(wú)論是float類型還是double類型,其最大偏移程度表示為尾數(shù)部分M最后一位尾數(shù)為1時(shí)所表示數(shù)據(jù)的一半)。因此,F(xiàn)max=[0.5*2E-B-23=2E-B-24],Dmax=[0.5*2E-B-52=2E-B-53]。

    浮點(diǎn)類型數(shù)據(jù)在內(nèi)存中存儲(chǔ)形式的確定過(guò)程如下:首先需要得到對(duì)應(yīng)的二進(jìn)制形式,即將十進(jìn)制浮點(diǎn)數(shù)轉(zhuǎn)換為24位二進(jìn)制形式,然后再進(jìn)行存儲(chǔ)。米保全[4]介紹了有關(guān)十進(jìn)制轉(zhuǎn)換為二進(jìn)制的技巧。對(duì)于整數(shù)部分,十進(jìn)制整數(shù)轉(zhuǎn)換為二進(jìn)制的規(guī)則為:除2求余,商為下次的被除數(shù),先得到的余數(shù)為二進(jìn)制的低位部分,后得到的余數(shù)為二進(jìn)制的高位部分,直到商為0為止。對(duì)于小數(shù)部分,十進(jìn)制整數(shù)轉(zhuǎn)換為二進(jìn)制的規(guī)則為:乘2取整,小數(shù)部分為下次的被乘數(shù),先得到的整數(shù)為二進(jìn)制的高位部分,后得到的整數(shù)為二進(jìn)制的低位部分,直到小數(shù)部分為0或者加上前面整數(shù)部分轉(zhuǎn)換的二進(jìn)制位超過(guò)了指定位數(shù)的二進(jìn)制為止(float類型為24位,double類型為53位)。最后計(jì)算結(jié)果,對(duì)于規(guī)范化float類型數(shù)據(jù)保留前面最高24位二進(jìn)制數(shù)字,對(duì)于規(guī)范化double類型數(shù)據(jù)保留前面最高的53位二進(jìn)制數(shù)字。多于指定位數(shù)的二進(jìn)制部分需要進(jìn)行向上進(jìn)位或者舍棄處理(通過(guò)驗(yàn)證程序2可知,按照就近原則靠攏,如果距離兩個(gè)數(shù)值相同,則采用進(jìn)位和舍棄交替進(jìn)行的方式處理)。

    如果將非負(fù)浮點(diǎn)數(shù)在內(nèi)存中的形式從1開(kāi)始按照自然數(shù)形式進(jìn)行編號(hào),1對(duì)應(yīng)內(nèi)存中存儲(chǔ)形式為0的數(shù)據(jù),2對(duì)應(yīng)最小正浮點(diǎn)數(shù),則對(duì)于float類型,當(dāng)指數(shù)位取值小于255時(shí),編號(hào)i取值范圍為[1,[255*223]]。通過(guò)驗(yàn)證程序2可知,編號(hào)i所能表示數(shù)的范圍可以用開(kāi)、閉區(qū)間進(jìn)行表示:當(dāng)i為奇數(shù)時(shí),相應(yīng)內(nèi)存數(shù)據(jù)對(duì)應(yīng)的實(shí)際范圍為閉區(qū)間,否則為開(kāi)區(qū)間。

    對(duì)于float類型,編號(hào)i與對(duì)應(yīng)指數(shù)位E以及尾數(shù)部分M之間關(guān)系為:由于指數(shù)部分確定時(shí),其尾數(shù)部分出現(xiàn)的可能情況為[223],是偶數(shù),開(kāi)閉區(qū)間交替出現(xiàn),所以編號(hào)i的開(kāi)閉情況與指數(shù)位E無(wú)關(guān),只與尾數(shù)部分M的情況有關(guān)。如果把尾數(shù)部分M看作23位二進(jìn)制整數(shù),那么當(dāng)尾數(shù)部分M為偶數(shù)時(shí)是閉區(qū)間,當(dāng)尾數(shù)部分M為奇數(shù)時(shí)是開(kāi)區(qū)間,即當(dāng)23位尾數(shù)部分的最后一位為0時(shí)是閉區(qū)間,當(dāng)其最后一位為1時(shí)是開(kāi)區(qū)間。doulbe類型數(shù)據(jù)分析過(guò)程與此類似,不再贅述。

    2.3.2 區(qū)間確定

    由上述尾數(shù)與開(kāi)閉區(qū)間之間關(guān)系以及內(nèi)存中存儲(chǔ)形式表示數(shù)的最大偏移程度,對(duì)于內(nèi)存中的任意存儲(chǔ)形式,其所對(duì)應(yīng)數(shù)據(jù)范圍也就確定下來(lái)了。目前的問(wèn)題是如何確定最大偏移程度。

    對(duì)于浮點(diǎn)類型,當(dāng)指數(shù)位確定時(shí),其最大偏移程度是確定的。對(duì)于float類型,F(xiàn)max=[2E-B-24];對(duì)于double類型,Dmax=[2E-B-53]。當(dāng)尾數(shù)部分不全為0時(shí),內(nèi)存中存儲(chǔ)數(shù)據(jù)對(duì)應(yīng)的浮點(diǎn)數(shù)t前后最大偏移程度是相同的。當(dāng)最后一位尾數(shù)部分為0時(shí),表示的數(shù)據(jù)范圍為閉區(qū)間,即對(duì)于float類型為[t-Fmax,t+Fmax],對(duì)于double類型為[t-Dmax,t+Dmax];當(dāng)最后一位尾數(shù)部分為1時(shí),表示的數(shù)據(jù)范圍為開(kāi)區(qū)間。當(dāng)尾數(shù)部分為全0時(shí),其最大偏移程度與兩個(gè)相鄰指數(shù)位部分有關(guān)。對(duì)于相鄰兩個(gè)指數(shù)位E'和E=E'+1:對(duì)于float類型,F(xiàn)max=[2E-B-24],數(shù)據(jù)前面的最大偏移量為0.5*Fmax,數(shù)據(jù)后面的最大偏移量為Fmax,即對(duì)于float類型數(shù)據(jù)t,其所能表示的區(qū)間為[t-0.5*Fmax,t+Fmax];對(duì)于double類型,Dmax=[2E-B-53],其所能表示的區(qū)間為[t-0.5*Dmax,t+Dmax],即相鄰兩個(gè)指數(shù)部分的最大偏移量相差1倍。

    浮點(diǎn)數(shù)不能精確地表示一個(gè)數(shù)字,規(guī)范化float類型數(shù)據(jù)有6~8位有效數(shù)字,double類型數(shù)據(jù)有15~17位有效數(shù)字,在計(jì)算一個(gè)內(nèi)存中存儲(chǔ)形式對(duì)應(yīng)的浮點(diǎn)數(shù)表示區(qū)間時(shí),一般情況下會(huì)與理論值有微小誤差。而且對(duì)于浮點(diǎn)數(shù),vc++6.0在計(jì)算過(guò)程中都是按照double類型進(jìn)行計(jì)算[1],而double類型所能表示的有效數(shù)字位數(shù)為15~17位,因此在表示float類型數(shù)據(jù)對(duì)應(yīng)的理論區(qū)間時(shí)需要按照double類型的計(jì)算過(guò)程進(jìn)行,即對(duì)于float類型數(shù)據(jù)的表示區(qū)間[a,b]或(a,b),對(duì)于a的表示,需要按照double類型數(shù)據(jù)對(duì)待,即只要區(qū)間[c,d]或(c,d)內(nèi)的值表示double類型a的值即可,類似可以得到對(duì)于b的取值范圍為[e,f]或(e,f)。從而可以得到對(duì)應(yīng)float類型數(shù)據(jù)的表示區(qū)間需要使用區(qū)間[c,f] (d,e)進(jìn)行表示,即對(duì)于float類型,當(dāng)尾數(shù)部分M不全為0、最后一位尾數(shù)部分為0時(shí),float類型數(shù)據(jù)t的理論區(qū)間為 [t-Fmax-Dmax,t+Fmax+Dmax],當(dāng)最后一位尾數(shù)部分不為0時(shí)為開(kāi)區(qū)間,表示為(t-Fmax+Dmax,t+Fmax-Dmax),其中Fmax=[2E-B-24]為float類型下最大偏移量,Dmax=[2E-B-53]為對(duì)應(yīng)double類型下最大偏移量;當(dāng)尾數(shù)部分M為全0時(shí),對(duì)于相鄰兩個(gè)指數(shù)位E'和E=E'+1,則對(duì)于指數(shù)部分為E的第一個(gè)數(shù)值(即尾數(shù)部分M為全0),float類型數(shù)據(jù)t的理論區(qū)間為[t-0.5*Fmax-0.5*Dmax,t+Fmax+Dmax],其中Fmax=[2E-B-24]為float類型下最大偏移量,Dmax=[2E-B-53]為對(duì)應(yīng)double類型下最大偏移量。

    因此,對(duì)于內(nèi)存中存儲(chǔ)形式對(duì)應(yīng)的float類型數(shù)據(jù)t,可以得出以下結(jié)論:

    (1)當(dāng)尾數(shù)部分M全為0時(shí),內(nèi)存中存儲(chǔ)形式對(duì)應(yīng)數(shù)據(jù)t表示的數(shù)據(jù)區(qū)間為:

    (2)當(dāng)尾數(shù)部分M不全為0并且最后一位為0時(shí),內(nèi)存中存儲(chǔ)形式對(duì)應(yīng)數(shù)據(jù)t表示的數(shù)據(jù)區(qū)間為:

    (3)當(dāng)尾數(shù)部分M不全為0并且最后一位為1時(shí),內(nèi)存中存儲(chǔ)形式對(duì)應(yīng)數(shù)據(jù)t表示的數(shù)據(jù)區(qū)間為:

    其中,F(xiàn)max=[2E-B-24]為float類型下的最大偏移量,Dmax=[2E-B-53]為對(duì)應(yīng)double類型下的最大偏移量。

    2.3.3 區(qū)間驗(yàn)證

    對(duì)于尾數(shù)部分全為0的float類型數(shù)據(jù),比如float類型數(shù)據(jù)167 772 16在內(nèi)存中進(jìn)行存儲(chǔ)時(shí),通過(guò)計(jì)算可知,其對(duì)應(yīng)的二進(jìn)制表示為1 00000000 00000000 00000000,即[224],在內(nèi)存中的存儲(chǔ)形式為01001011 10000000 00000000 00000000。167 772 15.5距離167 772 15與167 772 16相同,對(duì)167 772 16進(jìn)行向上進(jìn)位處理。由式(1)可知,其對(duì)應(yīng)的理論區(qū)間為[167 772 16-0.5*Fmax-0.5*Dmax,167 772 16+Fmax+Dmax],其中Fmax=[2151-127-24]=1,Dmax=[21 047-1 023-53]=1.862 6e-09,即理論區(qū)間值為[167 772 16-0.5*1-0.5*1.862 6e-09, 167 772 16+1.0+1.862 6e-09]。驗(yàn)證程序2如下:

    #include

    #include"show.h"

    void main()

    {

    float b1=16777216-0.5-9.3133e-10,b2=16777216-0.5-9.3132e-10,

    b3=16777216+1.0+1.8626e-09,b4=16777216+1.0+1.8627e-09;

    displaymemory(&b1,4,1);

    displaymemory(&b2,4,1);

    displaymemory(&b3,4,1);

    displaymemory(&b4,4,1);

    }

    從驗(yàn)證結(jié)果可知,b2和b3輸出的是float類型數(shù)據(jù)??? 167 772 16,而b1和b4輸出的不是該數(shù)據(jù),從而驗(yàn)證了上文理論結(jié)果是成立的。類似可以驗(yàn)證167 772 19距離??? 167 772 18和167 772 20相同,對(duì)167 772 20進(jìn)行向上進(jìn)位處理,167 772 21距離167 772 20和167 772 22相同,對(duì)?? 167 772 20進(jìn)行舍棄處理等。

    對(duì)于尾數(shù)部分不全為0的float類型,比如,對(duì)于float類型數(shù)據(jù)838 860 9,通過(guò)計(jì)算可知其在內(nèi)存中的存儲(chǔ)形式為01001011 00000000 00000000 00000001,符號(hào)位S為0,表示正數(shù),指數(shù)位E存放的數(shù)對(duì)應(yīng)整數(shù)值為150,尾數(shù)部分M最后一位為1,其余全為0。則其在內(nèi)存中的存儲(chǔ)值為:[1*2150-127+1*2-23*2150-127]=838 860 9。由式(3)可知,其能夠表示的數(shù)據(jù)范圍通過(guò)計(jì)算可知為(838 860 9-Fmax+Dmax,838 860 9+Fmax-Dmax),其中Fmax=[2150-127-23-1]=0.5,Dmax=[21 046-1023-52-1]=9.313 2e-10,即(838 860 9-0.5-9.313 2e- 10,838 860 9+0.5+9.313 2e-10)。與驗(yàn)證程序2類似,可以驗(yàn)證該區(qū)間。

    2.4 非規(guī)范化浮點(diǎn)類型數(shù)據(jù)有效數(shù)字位數(shù)

    非規(guī)范化浮點(diǎn)類型有效數(shù)字位數(shù)與尾數(shù)部分高位處開(kāi)始出現(xiàn)的1的位置有關(guān),從1開(kāi)始到尾數(shù)部分結(jié)束的位數(shù)決定了對(duì)應(yīng)十進(jìn)制有效數(shù)字位數(shù)。總體來(lái)說(shuō),從尾數(shù)部分高位處開(kāi)始出現(xiàn)1的位置越靠前,有效數(shù)字的位數(shù)就越多,非規(guī)范化浮點(diǎn)類型表示非常小的數(shù)字。

    比如,對(duì)于float類型數(shù)據(jù),其在內(nèi)存中的存儲(chǔ)形式為:00000000 00000000 00000000 00000001,即符號(hào)位S為0表示正,指數(shù)位E為全0表示真實(shí)指數(shù)值為-126,尾數(shù)部分M只有最后一位為1,其余全為0,該存儲(chǔ)形式通過(guò)計(jì)算可知其理論值為: [1*2-23*2-126=2-149],而對(duì)該數(shù)值的十進(jìn)制形式計(jì)算比較麻煩,因此,在下文驗(yàn)證過(guò)程中,采用對(duì)指定float類型數(shù)據(jù)存儲(chǔ)位置賦值的方式對(duì)該數(shù)據(jù)賦值,然后輸出該最小正float類型數(shù)據(jù)的指數(shù)形式,從而確定最小正float類型在內(nèi)存中的表示形式及其所對(duì)應(yīng)的十進(jìn)制指數(shù)形式。驗(yàn)證程序3如下:

    #include?

    typedef?struct?FP_SINGLE

    {

    ??unsigned?__int32?M:23;

    ??unsigned?__int32?E:8;

    ??unsigned?__int32?S:1;

    }?fp_single;

    void?main()

    {

    float?x;

    fp_single?*?fp_s=&x;

    fp_s->S=0;

    fp_s->E=0;

    fp_s->M=1;

    ??printf("float最小正非規(guī)范數(shù):%le \n",x);

    }

    從運(yùn)行結(jié)果可知,最小正float類型所能表示的非規(guī)范化數(shù)據(jù)為1.4012984643248171e-045。由式(3)可知,該運(yùn)行結(jié)果表示的是一個(gè)范圍,其最大偏移程度為該數(shù)的一半。與驗(yàn)證程序2類似,將b1、b2、b3、b4分別初始化為:7.00649232162408613e-46、7.00649232162408614e-46、2.10194769648722545e-45、2.10194769648722546e-45,可以驗(yàn)證該理論區(qū)間。

    由驗(yàn)證結(jié)果可知,b1和b4在內(nèi)存中存儲(chǔ)的是不同的數(shù)值,而b2和b3在內(nèi)存中存儲(chǔ)的是同一個(gè)值1.4012984643248171e-045,而b2-b3范圍內(nèi)的值與內(nèi)存中存儲(chǔ)的值相比,有效數(shù)字位數(shù)可能為0。

    由上述驗(yàn)證結(jié)果可以得出以下結(jié)論:對(duì)于float類型數(shù)據(jù),其非規(guī)范化數(shù)據(jù)有效數(shù)字的位數(shù)可能為0,總體來(lái)說(shuō),隨著非規(guī)范化數(shù)值增大,其有效數(shù)字的位數(shù)也逐漸增多,直到增加到6~8位為止,即其有效數(shù)字的位數(shù)在0~8位之間。對(duì)于double類型數(shù)據(jù),其非規(guī)范化數(shù)據(jù)有效數(shù)字的位數(shù)也有類似結(jié)論,即其有效數(shù)字位數(shù)在0~17位之間。

    3 浮點(diǎn)數(shù)使用注意問(wèn)題

    3.1 數(shù)據(jù)丟失與不能精確比較

    對(duì)于浮點(diǎn)數(shù)在計(jì)算中的丟失現(xiàn)象,杜叔強(qiáng)等[12,13]給出了相關(guān)建議。本文主要從float類型在計(jì)算過(guò)程中以double類型進(jìn)行計(jì)算的角度進(jìn)行解釋和分析。

    比如,float類型變量a=123 456 789 00,b=50;則a+b的結(jié)果不是123 456 789 50,在內(nèi)存中,a和b的存儲(chǔ)形式都是01010000 00110111 11110111 00000111,其值為???? 123 456 788 48,因?yàn)閍和b在計(jì)算時(shí)有效數(shù)字位數(shù)多于9位,不能精確存儲(chǔ)。該數(shù)123 456 789 00在內(nèi)存中存儲(chǔ)的值為123 456 788 48,該值加上50之后,沒(méi)有超過(guò)最大偏移量,還是123 456 788 48。通過(guò)計(jì)算可知,float類型數(shù)據(jù)123 456 788 48在內(nèi)存中存儲(chǔ)的指數(shù)位E為160,F(xiàn)max=[2160-127-23-1=29=512],Dmax=[21056-1023-52-1=2-20=][9.5367e-07],由式(3)可知,其表示的范圍為開(kāi)區(qū)間(123 456 788 48-Fmax+Dmax,12345678848+Fmax-Dmax),即(123 456 788 48-512+9.5367e-07,123 456 788 48+512- 9.5367e-07),如果計(jì)算結(jié)果在該區(qū)間,則都會(huì)以???????????? 123 456 788 48進(jìn)行存儲(chǔ)和顯示。與驗(yàn)證程序2類似的過(guò)程,可以驗(yàn)證該區(qū)間。

    由該現(xiàn)象可以得到一個(gè)結(jié)論:盡量不要使用兩個(gè)差別較大的浮點(diǎn)類型數(shù)據(jù)進(jìn)行運(yùn)算,否則會(huì)出現(xiàn)“大數(shù)吃小數(shù)”的現(xiàn)象。比較兩個(gè)數(shù)的差別,以較小數(shù)是否大于較大數(shù)的最大偏移量為準(zhǔn),如果較小數(shù)大于較大數(shù)的最大偏移量,則認(rèn)為兩個(gè)數(shù)差別不大,可以直接進(jìn)行運(yùn)算,否則,要盡量避免直接進(jìn)行運(yùn)算。

    類似可以驗(yàn)證,只要一個(gè)數(shù)加上數(shù)據(jù)的絕對(duì)值小于該數(shù)在內(nèi)存中的最大偏移量,無(wú)論先后加上多少個(gè)該類數(shù)據(jù),都是該數(shù)據(jù)本身。驗(yàn)證程序4如下:

    #include

    #include"show.h"

    void main()

    {

    float b=12345678848,b1;

    int? i;

    displaymemory(&b,4,1);

    b1=b;

    for(i=0;i<100;i++)b1=b1+500;

    displaymemory(&b1,4,1);

    }

    從計(jì)算結(jié)果來(lái)看,b和b1輸出結(jié)果相同,因此要盡量避免進(jìn)行類似運(yùn)算,即盡量避免將一個(gè)較大數(shù)和一個(gè)較小數(shù)(較小數(shù)小于較大數(shù)在內(nèi)存中對(duì)應(yīng)存儲(chǔ)形式的最大偏移量)進(jìn)行運(yùn)算。

    如果想讓較小數(shù)起作用,則需要多個(gè)較小數(shù)在同一個(gè)表達(dá)式中出現(xiàn),因?yàn)閒loat類型數(shù)據(jù)是按照double類型數(shù)據(jù)進(jìn)行計(jì)算的,double類型數(shù)據(jù)規(guī)范化形式有15~17位有效數(shù)字,可以將部分較小的數(shù)據(jù)保留下來(lái),最后再將計(jì)算得到的double類型數(shù)據(jù)自動(dòng)轉(zhuǎn)換為float類型數(shù)據(jù)進(jìn)行保存。驗(yàn)證程序5如下:

    #include

    #include"show.h"

    void main()

    {

    float b=12345678848,b1;

    int? i;

    displaymemory(&b,4,1);

    b1=b+500+500;

    displaymemory(&b1,4,1);

    }

    從計(jì)算結(jié)果來(lái)看,b和b1輸出結(jié)果不同,原因是對(duì)于b1的計(jì)算將b與多個(gè)較小數(shù)直接加在一起,在運(yùn)算時(shí)按照double類型進(jìn)行計(jì)算,因此能夠保留較多有效位數(shù),只要多個(gè)較小數(shù)加在一起超過(guò)了較大數(shù)的最大偏移量,就可以得到改變后的數(shù)。

    由于浮點(diǎn)數(shù)表示的數(shù)據(jù)不精確,一定范圍內(nèi)數(shù)值在內(nèi)存中存儲(chǔ)的形式相同,因此應(yīng)該盡量避免兩個(gè)接近的浮點(diǎn)數(shù)進(jìn)行相等和不相等比較。比如兩個(gè)float類型的變量a=12345678900、b=12345678950,在進(jìn)行a==b的條件判斷時(shí)結(jié)果為真,因?yàn)閍和b在內(nèi)存中的存儲(chǔ)形式相同,認(rèn)為這兩個(gè)變量相等。驗(yàn)證程序6如下:

    #include

    #include"show.h"

    void main()

    {

    float a=12345678900,b=12345678950;

    if(a==b)printf("a==b\n");

    else printf("a!=b\n");

    }

    從運(yùn)行結(jié)果來(lái)看,會(huì)輸出“a==b”,因?yàn)閷?duì)于浮點(diǎn)類型變量a和b,其在內(nèi)存中的存儲(chǔ)形式相同,因此條件“a==b”是成立的。所以,對(duì)于浮點(diǎn)類型變量,應(yīng)避免進(jìn)行相等和不相等的判斷。

    3.2 不同類型數(shù)據(jù)輸出時(shí)出現(xiàn)反?,F(xiàn)象

    C語(yǔ)言中常用的數(shù)據(jù)輸出格式符有d、c、f[1],對(duì)于不同數(shù)據(jù)類型需要使用不同格式符進(jìn)行輸出,如果不小心用了不該用的格式符,則輸出結(jié)果會(huì)與預(yù)期結(jié)果不同。字符型數(shù)據(jù)可以按照c格式符或者d格式符進(jìn)行輸出,分別按照字符形式或者對(duì)應(yīng)的十進(jìn)制整數(shù)形式進(jìn)行輸出;基本整型數(shù)據(jù)可以按照d格式符輸出其十進(jìn)制整數(shù)形式進(jìn)行輸出;f格式符用來(lái)輸出浮點(diǎn)類型數(shù)據(jù)的十進(jìn)制小數(shù)形式,如果要輸出指數(shù)形式,則以e格式符進(jìn)行輸出,f格式符和e格式符都默認(rèn)輸出6位小數(shù)部分。

    如果數(shù)據(jù)輸出時(shí)沒(méi)有按照其正常格式符進(jìn)行輸出,則輸出結(jié)果按照對(duì)應(yīng)格式符存儲(chǔ)形式要求進(jìn)行輸出。比如:double a=2.5,printf(“%d\n”,*(int *) &a),輸出結(jié)果是0,因?yàn)?.5在內(nèi)存中按照double類型進(jìn)行存儲(chǔ),占8個(gè)字節(jié),其在內(nèi)存中的存儲(chǔ)形式為01000000 00000100 00000000 00000000 00000000 00000000 00000000 00000000,而輸出時(shí)按照后4個(gè)字節(jié)整數(shù)對(duì)應(yīng)的存儲(chǔ)形式規(guī)則進(jìn)行讀取。驗(yàn)證程序7如下:

    #include

    #include"show.h"

    void main()

    {

    double a=2.5;

    displaymemory(&a,8,2);

    printf("%d\n",a);

    }

    如果把整數(shù)按照f(shuō)格式符進(jìn)行輸出,將整數(shù)的地址按照浮點(diǎn)類型地址格式進(jìn)行讀取,則讀取過(guò)程中會(huì)按照浮點(diǎn)類型的規(guī)則進(jìn)行處理。比如:int a=655 36,printf(“%e\n”,a),變量a在內(nèi)存中的存儲(chǔ)形式為00000000 00000001 00000000 00000000。單精度浮點(diǎn)類型數(shù)據(jù)的輸出結(jié)果是9.1835496157991212e-041,而雙精度浮點(diǎn)類型(因?yàn)閒或e格式符默認(rèn)將相應(yīng)參數(shù)看作雙精度浮點(diǎn)類型數(shù)據(jù)進(jìn)行輸出)輸出結(jié)果是5.597333e-308。由前面浮點(diǎn)類型在內(nèi)存中存儲(chǔ)形式的規(guī)定可知:如果按照單精度浮點(diǎn)類型數(shù)據(jù)的處理方式進(jìn)行處理,該存儲(chǔ)形式對(duì)應(yīng)的單精度浮點(diǎn)數(shù)是一個(gè)非規(guī)范化浮點(diǎn)數(shù);如果按照雙精度浮點(diǎn)類型數(shù)據(jù)的處理方式進(jìn)行處理,需要變量a的地址和其前面4個(gè)字節(jié)的地址作為雙精度浮點(diǎn)類型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式進(jìn)行處理,由于變量a的地址前面4個(gè)字節(jié)存儲(chǔ)形式不固定,因此,得到雙精度浮點(diǎn)類型數(shù)據(jù)在不同運(yùn)行環(huán)境下一般是不同的,其測(cè)試存儲(chǔ)形式如下:00000000 00010010 11111111 11000000 00000000 00000001 00000000 00000000。驗(yàn)證程序8如下:

    #include

    #include"show.h"

    void main()

    {

    int a=65536;

    displaymemory(&a,8,2);

    printf("%e\n",a);

    }

    因此,對(duì)于不同數(shù)據(jù)類型,需要使用其對(duì)應(yīng)的格式符進(jìn)行輸出格式控制,否則會(huì)按照對(duì)應(yīng)輸出格式的數(shù)據(jù)進(jìn)行處理和輸出。

    4 結(jié)語(yǔ)

    不同數(shù)據(jù)類型在計(jì)算機(jī)內(nèi)存中的存放方式不同,導(dǎo)致一些與整型類型不一樣的用法,比如數(shù)據(jù)有效位數(shù)限制、不能精確比較、“大數(shù)吃小數(shù)”等問(wèn)題出現(xiàn)。只有了解不同數(shù)據(jù)的存儲(chǔ)長(zhǎng)度和存儲(chǔ)形式,才能理解為什么有的計(jì)算結(jié)果與理論計(jì)算結(jié)果不同。杜叔強(qiáng)等[12,13]、周冠方[15]給出了浮點(diǎn)數(shù)使用注意事項(xiàng)。本文給出了浮點(diǎn)類型數(shù)據(jù)在內(nèi)存中不同形式對(duì)應(yīng)的理論取值區(qū)間,并通過(guò)實(shí)驗(yàn)驗(yàn)證了該區(qū)間的存在,在使用過(guò)程中需要根據(jù)遇到的不同情況加以處理。

    由于浮點(diǎn)類型數(shù)據(jù)的有效位數(shù)有限(float類型為6~8位,double類型為15~17位),如果想得到更多有效位數(shù),比如對(duì)于π值的計(jì)算,想要得到小數(shù)點(diǎn)后100位有效數(shù)字,則按照現(xiàn)有數(shù)據(jù)類型無(wú)法得到,需要定義新的能夠表示更多有效位數(shù)的數(shù)據(jù)類型才能進(jìn)行。

    參考文獻(xiàn):

    [1] 譚浩強(qiáng). C程序設(shè)計(jì)(第四版)[M]. 北京:清華大學(xué)出版社, 2010.

    [2] 向萬(wàn)里,王智勇. C語(yǔ)言程序設(shè)計(jì)中關(guān)于補(bǔ)碼的幾個(gè)問(wèn)題的探討[J]. 甘肅聯(lián)合大學(xué)學(xué)報(bào):自然科學(xué)版,2008(S1):6-8.

    [3] 吳艷婷,方賢進(jìn). 數(shù)據(jù)在計(jì)算機(jī)內(nèi)存中的存儲(chǔ)形式及實(shí)驗(yàn)驗(yàn)證[J]. 安慶師范學(xué)院學(xué)報(bào):自然科學(xué)版,2016,22(4):152-154.

    [4] 米保全. 基于計(jì)算機(jī)中進(jìn)制的轉(zhuǎn)換技巧[J]. 電子技術(shù)與軟件工程,2018(1):126.

    [5] 楊翠芳. 淺談?dòng)?jì)算機(jī)基礎(chǔ)課程中數(shù)制的轉(zhuǎn)換問(wèn)題[J]. 電子制作, 2014(18):72.

    [6] 常玉紅,楊秀華. 巧用C語(yǔ)言指針驗(yàn)證數(shù)據(jù)的存儲(chǔ)方式[J]. 電腦知識(shí)與技術(shù),2007,3(14):393-397.

    [7] 周恒忠. C語(yǔ)言實(shí)型數(shù)據(jù)的編碼和存儲(chǔ)[J]. 皖西學(xué)院學(xué)報(bào),2007,23(5):19-21.

    [8] ZURAS D,COWLISHAW M,AIKEN A.IEEE standard for floating-point arithmetic[C].? IEEE Std 754-2008,2008:1-70.

    [9] 張宗杰,張明亮. C語(yǔ)言中浮點(diǎn)數(shù)的存儲(chǔ)格式及其有效數(shù)字位數(shù)[J]. 計(jì)算機(jī)與數(shù)字工程, 2006,34(1):84-86.

    [10] 田祎,樊景博. C語(yǔ)言中浮點(diǎn)數(shù)的表示范圍淺析[J]. 軟件工程,2016,19(4):8-10.

    [11] 王力. 科學(xué)計(jì)算程序語(yǔ)言的浮點(diǎn)數(shù)機(jī)制研究[J]. 計(jì)算機(jī)科學(xué),2008,35(4):285-287.

    [12] 杜叔強(qiáng). 淺析C語(yǔ)言中的浮點(diǎn)數(shù)[J]. 蘭州工業(yè)學(xué)院學(xué)報(bào),2010,17(5):26-28.

    [13] 杜叔強(qiáng),施武祖. 浮點(diǎn)數(shù)用法分析[J]. 蘭州工業(yè)學(xué)院學(xué)報(bào),2012,19(3):51-53.

    [14] 吳菊鳳,陳雪梨. 數(shù)制轉(zhuǎn)換過(guò)程中小數(shù)的“有限-無(wú)限”現(xiàn)象[J]. 紹興文理學(xué)院學(xué)報(bào):自然科學(xué)版, 2011,31(1):16-19.

    [15] 周冠方C語(yǔ)言中浮點(diǎn)數(shù)精度問(wèn)題分析[J]. 湖北工業(yè)職業(yè)技術(shù)學(xué)院學(xué)報(bào), 2015(3):97-99.

    [16] 程裕強(qiáng). 編程語(yǔ)言中浮點(diǎn)數(shù)精度丟失問(wèn)題[J]. 計(jì)算機(jī)安全,2013(6):59-61.

    [17] 陳愛(ài)民,毛莉珍.? Turbo C中兩個(gè)浮點(diǎn)數(shù)問(wèn)題分析[J]. 寧德師范學(xué)院學(xué)報(bào):自然科學(xué)版, 2013,25(4):370-372.

    [18] 李偉,余森,門佳. 浮點(diǎn)數(shù)存儲(chǔ)精度丟失問(wèn)題——由學(xué)生提問(wèn)所引發(fā)的思考[J]. 濮陽(yáng)職業(yè)技術(shù)學(xué)院學(xué)報(bào),2015(3):151-153.

    [19] 程寧,崔凱. C++浮點(diǎn)型數(shù)據(jù)存儲(chǔ)格式研究[J]. 南陽(yáng)師范學(xué)院學(xué)報(bào),2010,9(9):59-62.

    [20] 逯鴻友. 關(guān)于數(shù)制轉(zhuǎn)換中轉(zhuǎn)換位數(shù)的確定問(wèn)題[J]. 牡丹江師范學(xué)院學(xué)報(bào):自然科學(xué)版, 2000(4):20-21.

    [21] BAIDU. Little-endian[EB/OL].http://baike.baidu.com/view/2368412. htm.

    (責(zé)任編輯:何 麗)

    猜你喜歡
    存儲(chǔ)單元
    面向存儲(chǔ)空間受限的分揀系統(tǒng)內(nèi)多類型存儲(chǔ)單元數(shù)量配置
    一種28 nm工藝下抗單粒子翻轉(zhuǎn)SRAM的12T存儲(chǔ)單元設(shè)計(jì)
    一種新型密集堆垛式倉(cāng)儲(chǔ)系統(tǒng)設(shè)計(jì)
    英國(guó)牛津大學(xué)開(kāi)發(fā)出具有光電雙重性的 新型存儲(chǔ)單元
    一種FIFO的讀寫單元設(shè)計(jì)
    數(shù)據(jù)在計(jì)算機(jī)內(nèi)存中的存儲(chǔ)形式及實(shí)驗(yàn)驗(yàn)證
    一種成本更低的全新靜態(tài)DRAM存儲(chǔ)單元
    MiR-125a-5p is Upregulated in Plasma of Residents from An Electronic Waste Recycling Site
    OTP存儲(chǔ)器存儲(chǔ)單元內(nèi)寄生電容對(duì)讀取閾值的影響
    IBM的“相變內(nèi)存”技術(shù)進(jìn)一步提升手機(jī)運(yùn)行速度
    CHIP新電腦(2016年6期)2016-06-21 11:39:27
    国产精品一区二区在线不卡| 免费播放大片免费观看视频在线观看| 久久久久人妻精品一区果冻| 麻豆精品久久久久久蜜桃| 老女人水多毛片| 大香蕉久久网| 午夜av观看不卡| 久久ye,这里只有精品| 成年人午夜在线观看视频| 高清在线视频一区二区三区| 国产精品.久久久| 久久久午夜欧美精品| 精品午夜福利在线看| 99九九在线精品视频| 另类精品久久| 男女无遮挡免费网站观看| av在线老鸭窝| 三上悠亚av全集在线观看| 亚洲成人一二三区av| 999精品在线视频| 亚洲人与动物交配视频| 国内精品宾馆在线| 热99国产精品久久久久久7| 国内精品宾馆在线| 亚洲丝袜综合中文字幕| 午夜日本视频在线| 亚洲情色 制服丝袜| 少妇 在线观看| 久久狼人影院| 交换朋友夫妻互换小说| 日韩av免费高清视频| 大香蕉97超碰在线| 久久这里有精品视频免费| 亚洲欧美精品自产自拍| 久久久久久伊人网av| av卡一久久| 狠狠精品人妻久久久久久综合| 不卡视频在线观看欧美| 日韩精品有码人妻一区| 插阴视频在线观看视频| 国产成人精品一,二区| 九九在线视频观看精品| 中文精品一卡2卡3卡4更新| 高清欧美精品videossex| 香蕉精品网在线| 国产片特级美女逼逼视频| 国产在视频线精品| 日韩 亚洲 欧美在线| 精品视频人人做人人爽| 亚洲精品自拍成人| 免费久久久久久久精品成人欧美视频 | 人体艺术视频欧美日本| 国产精品人妻久久久影院| 一本大道久久a久久精品| av黄色大香蕉| 国产免费一级a男人的天堂| 777米奇影视久久| 免费观看的影片在线观看| 精品人妻一区二区三区麻豆| 亚洲精品aⅴ在线观看| 久久久国产一区二区| 在现免费观看毛片| 国产不卡av网站在线观看| 男女啪啪激烈高潮av片| 免费av中文字幕在线| 欧美精品亚洲一区二区| 免费看不卡的av| 2022亚洲国产成人精品| 啦啦啦中文免费视频观看日本| 亚洲精品中文字幕在线视频| 久久精品人人爽人人爽视色| 亚洲国产精品专区欧美| 国产在视频线精品| 80岁老熟妇乱子伦牲交| 日本av免费视频播放| 免费观看性生交大片5| 人妻少妇偷人精品九色| 精品人妻熟女av久视频| 国产亚洲一区二区精品| 国产69精品久久久久777片| 免费看av在线观看网站| 久久免费观看电影| 亚洲激情五月婷婷啪啪| 男人操女人黄网站| 精品久久久久久电影网| 国产精品欧美亚洲77777| 日日摸夜夜添夜夜爱| 久久国内精品自在自线图片| 天堂俺去俺来也www色官网| 黑人巨大精品欧美一区二区蜜桃 | 中文字幕久久专区| 亚洲无线观看免费| 老司机影院毛片| 18在线观看网站| 国产成人免费观看mmmm| 日本av手机在线免费观看| 在现免费观看毛片| 亚洲av不卡在线观看| 精品一区二区三卡| 国产午夜精品一二区理论片| 女性生殖器流出的白浆| 纵有疾风起免费观看全集完整版| 只有这里有精品99| 日本wwww免费看| 日本猛色少妇xxxxx猛交久久| 在线观看美女被高潮喷水网站| 国产精品99久久99久久久不卡 | 日本av手机在线免费观看| 国产欧美日韩一区二区三区在线 | 日本欧美国产在线视频| 国产69精品久久久久777片| 亚洲成人手机| 午夜激情久久久久久久| 夫妻午夜视频| 黄片播放在线免费| 成人无遮挡网站| 丁香六月天网| 日韩av在线免费看完整版不卡| 91久久精品国产一区二区三区| 亚洲欧美中文字幕日韩二区| 建设人人有责人人尽责人人享有的| 久热久热在线精品观看| 久久久久久久国产电影| 两个人免费观看高清视频| 汤姆久久久久久久影院中文字幕| 热re99久久国产66热| 人体艺术视频欧美日本| 久久国产亚洲av麻豆专区| 国产极品天堂在线| 久久久久久久大尺度免费视频| 日本猛色少妇xxxxx猛交久久| 国产免费一级a男人的天堂| 黑人巨大精品欧美一区二区蜜桃 | 国产av精品麻豆| 人妻少妇偷人精品九色| 亚洲国产欧美在线一区| 亚洲国产av新网站| 国产高清有码在线观看视频| 久久久久久久国产电影| 欧美亚洲日本最大视频资源| 麻豆精品久久久久久蜜桃| 极品人妻少妇av视频| 国产白丝娇喘喷水9色精品| 在线观看一区二区三区激情| 国产一级毛片在线| 丰满少妇做爰视频| 美女国产视频在线观看| 纵有疾风起免费观看全集完整版| 九草在线视频观看| 考比视频在线观看| 中文字幕制服av| 日本欧美国产在线视频| 制服人妻中文乱码| 亚洲美女黄色视频免费看| 亚洲国产精品999| 亚洲人成网站在线播| 国产 精品1| av国产精品久久久久影院| av在线观看视频网站免费| 亚洲经典国产精华液单| 久久av网站| 老女人水多毛片| 九色亚洲精品在线播放| 国产 一区精品| 看免费成人av毛片| 亚洲欧美中文字幕日韩二区| 夜夜看夜夜爽夜夜摸| 国产欧美亚洲国产| 成人免费观看视频高清| 亚洲成色77777| 九九在线视频观看精品| 夜夜看夜夜爽夜夜摸| 国产成人精品久久久久久| 美女大奶头黄色视频| 国产黄频视频在线观看| av免费观看日本| 91午夜精品亚洲一区二区三区| freevideosex欧美| 五月伊人婷婷丁香| 看非洲黑人一级黄片| 又大又黄又爽视频免费| 桃花免费在线播放| 自拍欧美九色日韩亚洲蝌蚪91| xxx大片免费视频| 又粗又硬又长又爽又黄的视频| www.色视频.com| 亚洲伊人久久精品综合| 色婷婷av一区二区三区视频| 日韩制服骚丝袜av| 久久久久久伊人网av| 久久久久久久久大av| 国产成人91sexporn| 国产欧美另类精品又又久久亚洲欧美| 免费不卡的大黄色大毛片视频在线观看| 精品久久久久久电影网| 五月玫瑰六月丁香| 精品午夜福利在线看| 亚洲国产av影院在线观看| 亚洲一级一片aⅴ在线观看| 一本—道久久a久久精品蜜桃钙片| 丰满迷人的少妇在线观看| 搡女人真爽免费视频火全软件| 国产黄频视频在线观看| 精品一区二区免费观看| 狂野欧美激情性xxxx在线观看| 国产精品久久久久久av不卡| av播播在线观看一区| 最近中文字幕高清免费大全6| 久久青草综合色| 一本久久精品| 久久午夜福利片| 亚洲,一卡二卡三卡| 春色校园在线视频观看| 国产视频内射| 伊人久久国产一区二区| 精品久久久噜噜| 久久亚洲国产成人精品v| 老司机影院毛片| 最新的欧美精品一区二区| 老司机影院毛片| av卡一久久| 久久久久网色| 亚洲不卡免费看| 成人午夜精彩视频在线观看| 女性生殖器流出的白浆| 男女啪啪激烈高潮av片| 一本色道久久久久久精品综合| 欧美日韩在线观看h| 国产一区二区在线观看av| 久久ye,这里只有精品| videossex国产| 少妇人妻精品综合一区二区| 99热这里只有精品一区| 男人添女人高潮全过程视频| 看十八女毛片水多多多| 久久免费观看电影| 日韩不卡一区二区三区视频在线| 亚洲内射少妇av| 插阴视频在线观看视频| 水蜜桃什么品种好| 熟妇人妻不卡中文字幕| 免费看光身美女| 一级,二级,三级黄色视频| 日本午夜av视频| 久久人人爽人人爽人人片va| 久久99热这里只频精品6学生| 曰老女人黄片| 老熟女久久久| 午夜免费观看性视频| a级片在线免费高清观看视频| 寂寞人妻少妇视频99o| 亚洲美女视频黄频| 国产视频首页在线观看| 啦啦啦视频在线资源免费观看| 九色亚洲精品在线播放| 精品亚洲成a人片在线观看| 亚洲,欧美,日韩| 伊人亚洲综合成人网| 日韩大片免费观看网站| 国产成人a∨麻豆精品| 99热全是精品| 久久国产精品男人的天堂亚洲 | 插阴视频在线观看视频| 91精品国产九色| 精品人妻在线不人妻| 欧美激情 高清一区二区三区| 九九在线视频观看精品| 日韩精品有码人妻一区| 亚洲情色 制服丝袜| 丰满饥渴人妻一区二区三| 蜜桃在线观看..| 中文字幕人妻丝袜制服| av免费在线看不卡| 能在线免费看毛片的网站| 狠狠精品人妻久久久久久综合| 亚洲丝袜综合中文字幕| .国产精品久久| 人人妻人人澡人人看| 久久精品久久精品一区二区三区| 亚洲国产精品成人久久小说| 亚洲欧美色中文字幕在线| 肉色欧美久久久久久久蜜桃| 亚洲国产av影院在线观看| 美女内射精品一级片tv| 九九爱精品视频在线观看| 亚洲精华国产精华液的使用体验| 亚洲欧美精品自产自拍| 日本vs欧美在线观看视频| 国产黄片视频在线免费观看| 99热全是精品| 国产午夜精品一二区理论片| 亚洲欧美一区二区三区黑人 | 国产69精品久久久久777片| 免费人成在线观看视频色| 国产有黄有色有爽视频| 十分钟在线观看高清视频www| 亚洲高清免费不卡视频| 中文字幕亚洲精品专区| 久久毛片免费看一区二区三区| 满18在线观看网站| 七月丁香在线播放| 99九九在线精品视频| 久久久久久久久久久丰满| 免费高清在线观看日韩| 69精品国产乱码久久久| 国产成人精品婷婷| 国产在视频线精品| 亚洲三级黄色毛片| 亚洲av日韩在线播放| 99久久中文字幕三级久久日本| 免费观看无遮挡的男女| 亚洲精品456在线播放app| 亚洲国产精品999| 欧美精品一区二区免费开放| 啦啦啦中文免费视频观看日本| 久久99热6这里只有精品| 亚洲欧美成人精品一区二区| 天天操日日干夜夜撸| 爱豆传媒免费全集在线观看| 午夜老司机福利剧场| 亚洲国产精品国产精品| 国产精品.久久久| 日日撸夜夜添| 能在线免费看毛片的网站| 久久久国产欧美日韩av| 免费观看av网站的网址| 97超视频在线观看视频| 一级毛片我不卡| 大又大粗又爽又黄少妇毛片口| 午夜福利网站1000一区二区三区| 最近最新中文字幕免费大全7| 一区二区三区乱码不卡18| 国产免费又黄又爽又色| 免费高清在线观看日韩| av免费在线看不卡| 夜夜骑夜夜射夜夜干| 91成人精品电影| 国产免费现黄频在线看| 亚洲综合色惰| 美女cb高潮喷水在线观看| 在线观看一区二区三区激情| 免费观看av网站的网址| 在线观看三级黄色| 欧美精品亚洲一区二区| 久久亚洲国产成人精品v| 国产精品无大码| av在线播放精品| 免费黄频网站在线观看国产| 亚洲国产精品一区二区三区在线| 亚洲怡红院男人天堂| 久久精品久久精品一区二区三区| 亚洲不卡免费看| 在线看a的网站| 99九九线精品视频在线观看视频| 三级国产精品片| 91精品一卡2卡3卡4卡| av福利片在线| 成人无遮挡网站| 国产亚洲av片在线观看秒播厂| 成人毛片60女人毛片免费| 国产成人精品婷婷| 啦啦啦啦在线视频资源| 伦精品一区二区三区| 国产精品一国产av| 最近中文字幕高清免费大全6| 国产亚洲精品第一综合不卡 | 免费高清在线观看日韩| 大码成人一级视频| 亚洲国产色片| 国产免费又黄又爽又色| freevideosex欧美| 亚洲,一卡二卡三卡| 中文字幕久久专区| 中文天堂在线官网| 在线观看国产h片| 欧美3d第一页| 女人久久www免费人成看片| 亚洲国产精品专区欧美| 国内精品宾馆在线| 精品少妇黑人巨大在线播放| 亚洲国产av影院在线观看| 美女国产高潮福利片在线看| 一区二区日韩欧美中文字幕 | 两个人免费观看高清视频| freevideosex欧美| 午夜福利视频精品| 三上悠亚av全集在线观看| 国产精品久久久久久久电影| 在线观看三级黄色| 蜜桃国产av成人99| 国产av精品麻豆| 中文字幕最新亚洲高清| 晚上一个人看的免费电影| 高清午夜精品一区二区三区| 黑人猛操日本美女一级片| 欧美日韩亚洲高清精品| 99精国产麻豆久久婷婷| av一本久久久久| 久热久热在线精品观看| 久久人妻熟女aⅴ| 青春草亚洲视频在线观看| 十八禁高潮呻吟视频| 肉色欧美久久久久久久蜜桃| 精品一区在线观看国产| 热re99久久精品国产66热6| 久久鲁丝午夜福利片| 九九久久精品国产亚洲av麻豆| a级毛片黄视频| 高清视频免费观看一区二区| 国产伦精品一区二区三区视频9| 国产精品久久久久久精品电影小说| 99国产精品免费福利视频| 女人精品久久久久毛片| 免费日韩欧美在线观看| 天天影视国产精品| .国产精品久久| 国产亚洲午夜精品一区二区久久| 91精品国产国语对白视频| 亚洲不卡免费看| 欧美精品一区二区大全| 最近中文字幕高清免费大全6| 十八禁高潮呻吟视频| 亚洲精品亚洲一区二区| 亚洲欧美日韩卡通动漫| 久热这里只有精品99| 五月伊人婷婷丁香| 欧美日韩av久久| 国产在线免费精品| 大码成人一级视频| 国产精品蜜桃在线观看| 亚洲第一区二区三区不卡| 国产成人av激情在线播放 | 黄色一级大片看看| av又黄又爽大尺度在线免费看| 韩国高清视频一区二区三区| 亚洲第一区二区三区不卡| 久久久久久久精品精品| 国产精品麻豆人妻色哟哟久久| 国产精品偷伦视频观看了| 久久 成人 亚洲| 久久久a久久爽久久v久久| 欧美日韩视频精品一区| 亚洲精品国产av成人精品| 亚洲,欧美,日韩| 中文精品一卡2卡3卡4更新| 国产69精品久久久久777片| 日本免费在线观看一区| 国产精品欧美亚洲77777| 精品99又大又爽又粗少妇毛片| 国产成人精品无人区| 99久久综合免费| 18+在线观看网站| 99久久中文字幕三级久久日本| 国产精品久久久久久久久免| 两个人的视频大全免费| 日日摸夜夜添夜夜爱| h视频一区二区三区| 欧美丝袜亚洲另类| 国产免费视频播放在线视频| 日本91视频免费播放| 日本午夜av视频| 国产成人aa在线观看| 女人久久www免费人成看片| 久久久精品94久久精品| 亚洲少妇的诱惑av| 婷婷色麻豆天堂久久| 我要看黄色一级片免费的| 亚洲无线观看免费| 久久人人爽人人爽人人片va| 亚洲av在线观看美女高潮| 制服诱惑二区| 亚洲欧美中文字幕日韩二区| 伦理电影大哥的女人| 在线观看国产h片| 日韩一区二区视频免费看| www.色视频.com| 国产精品久久久久久久久免| 97在线人人人人妻| 99精国产麻豆久久婷婷| 成人漫画全彩无遮挡| 日本欧美视频一区| 草草在线视频免费看| 欧美3d第一页| 久久久久久久久久久久大奶| 久久午夜福利片| 尾随美女入室| 又粗又硬又长又爽又黄的视频| 亚洲人成网站在线播| 国产 一区精品| a级毛色黄片| 久久人妻熟女aⅴ| 国产成人a∨麻豆精品| 人妻 亚洲 视频| 日本wwww免费看| 丝袜在线中文字幕| freevideosex欧美| av女优亚洲男人天堂| 欧美最新免费一区二区三区| 国产亚洲午夜精品一区二区久久| 久久久国产欧美日韩av| 又大又黄又爽视频免费| 蜜桃国产av成人99| 超色免费av| 亚洲国产精品成人久久小说| 成人免费观看视频高清| 综合色丁香网| 人妻一区二区av| 久久久精品94久久精品| 夜夜爽夜夜爽视频| 爱豆传媒免费全集在线观看| 久久久久久久大尺度免费视频| 国产女主播在线喷水免费视频网站| 狂野欧美激情性xxxx在线观看| 欧美 日韩 精品 国产| 久久精品人人爽人人爽视色| 91aial.com中文字幕在线观看| 十分钟在线观看高清视频www| 国产免费视频播放在线视频| a级毛色黄片| 午夜免费男女啪啪视频观看| 国产永久视频网站| 日日摸夜夜添夜夜爱| 久久久欧美国产精品| 国国产精品蜜臀av免费| 黄色欧美视频在线观看| 日日撸夜夜添| 中文字幕人妻熟人妻熟丝袜美| 久久久久久伊人网av| 国产精品国产三级国产专区5o| 亚洲精品自拍成人| 丝袜脚勾引网站| 大香蕉久久网| 国产精品女同一区二区软件| 少妇的逼水好多| 自拍欧美九色日韩亚洲蝌蚪91| 黄色欧美视频在线观看| 精品午夜福利在线看| 日本91视频免费播放| 亚洲怡红院男人天堂| 亚洲精品国产av蜜桃| 这个男人来自地球电影免费观看 | 九色亚洲精品在线播放| 免费大片黄手机在线观看| 国产精品女同一区二区软件| 成人午夜精彩视频在线观看| 久久久国产一区二区| 精品视频人人做人人爽| 精品久久蜜臀av无| 欧美精品高潮呻吟av久久| 日韩伦理黄色片| 蜜桃久久精品国产亚洲av| 久久精品久久久久久噜噜老黄| 国产精品蜜桃在线观看| 少妇被粗大猛烈的视频| 国产无遮挡羞羞视频在线观看| 汤姆久久久久久久影院中文字幕| 大香蕉97超碰在线| 大陆偷拍与自拍| 午夜老司机福利剧场| 在线天堂最新版资源| 水蜜桃什么品种好| 高清黄色对白视频在线免费看| 久久精品夜色国产| 超色免费av| 国产精品久久久久久久久免| 九九久久精品国产亚洲av麻豆| 精品亚洲乱码少妇综合久久| www.色视频.com| 午夜福利视频在线观看免费| 看非洲黑人一级黄片| 18禁观看日本| 免费播放大片免费观看视频在线观看| 纯流量卡能插随身wifi吗| 69精品国产乱码久久久| 亚洲人成网站在线播| 99热国产这里只有精品6| 亚洲精品国产av蜜桃| 久久久久精品久久久久真实原创| 特大巨黑吊av在线直播| 看非洲黑人一级黄片| 九九爱精品视频在线观看| 精品一区二区免费观看| 91成人精品电影| 国产成人精品婷婷| 久久毛片免费看一区二区三区| 黑人欧美特级aaaaaa片| 欧美激情国产日韩精品一区| 国产黄片视频在线免费观看| 国产精品一区二区三区四区免费观看| 亚洲婷婷狠狠爱综合网| 插逼视频在线观看| 色婷婷久久久亚洲欧美| 日韩一本色道免费dvd| 国产精品一区www在线观看| 中文天堂在线官网| 最近的中文字幕免费完整| 婷婷色麻豆天堂久久| 性色av一级| 成人黄色视频免费在线看| 中文字幕免费在线视频6| 亚洲国产精品专区欧美| 午夜福利视频在线观看免费| 亚洲综合色网址| 美女中出高潮动态图| 搡老乐熟女国产| 高清视频免费观看一区二区| 久久 成人 亚洲| 全区人妻精品视频| 亚洲精品日本国产第一区| 母亲3免费完整高清在线观看 | 国产在线视频一区二区| 日日爽夜夜爽网站| 最近中文字幕2019免费版| 久久久久精品性色| 久久99精品国语久久久|