• <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网站| 高清欧美精品videossex| 国产精品亚洲av一区麻豆 | 精品一区二区三区四区五区乱码 | 亚洲欧美精品综合一区二区三区| 天天躁夜夜躁狠狠久久av| 久久久精品免费免费高清| 亚洲国产欧美网| 中文精品一卡2卡3卡4更新| 国产成人精品久久二区二区91 | 丝袜脚勾引网站| 中文精品一卡2卡3卡4更新| 波多野结衣一区麻豆| 欧美日本中文国产一区发布| 妹子高潮喷水视频| 夜夜骑夜夜射夜夜干| 日本爱情动作片www.在线观看| 啦啦啦在线免费观看视频4| 色婷婷久久久亚洲欧美| 午夜免费男女啪啪视频观看| 在线观看www视频免费| 精品一区二区三卡| 人妻 亚洲 视频| 亚洲国产看品久久| 免费黄频网站在线观看国产| 国产精品久久久久久精品古装| 国产亚洲最大av| xxxhd国产人妻xxx| 搡老乐熟女国产| 久久久久久久久免费视频了| 久久青草综合色| 亚洲国产欧美网| 久久人人爽av亚洲精品天堂| 女性生殖器流出的白浆| e午夜精品久久久久久久| 伊人亚洲综合成人网| 97人妻天天添夜夜摸| 亚洲成人av在线免费| 国产男人的电影天堂91| 大陆偷拍与自拍| 免费看不卡的av| 在线看a的网站| 十八禁高潮呻吟视频| 日本色播在线视频| 91精品伊人久久大香线蕉| 亚洲,欧美精品.| 最近2019中文字幕mv第一页| 中文欧美无线码| 久久久久久人妻| 中文字幕精品免费在线观看视频| 波野结衣二区三区在线| 欧美日韩福利视频一区二区| 国产成人午夜福利电影在线观看| 高清欧美精品videossex| 国产1区2区3区精品| 香蕉国产在线看| 国产乱人偷精品视频| av不卡在线播放| 欧美人与性动交α欧美精品济南到| 伊人久久国产一区二区| 国产片内射在线| 国产在线视频一区二区| 久久久久久免费高清国产稀缺| 精品人妻熟女毛片av久久网站| 日韩av不卡免费在线播放| 免费少妇av软件| av不卡在线播放| 日韩精品有码人妻一区| 伦理电影大哥的女人| 国产精品久久久人人做人人爽| 在线观看www视频免费| 亚洲综合色网址| 日韩不卡一区二区三区视频在线| 国产伦人伦偷精品视频| 国产xxxxx性猛交| 晚上一个人看的免费电影| 日韩欧美精品免费久久| 自拍欧美九色日韩亚洲蝌蚪91| 中文字幕人妻丝袜制服| 青春草视频在线免费观看| 高清不卡的av网站| 国产亚洲欧美精品永久| 精品人妻熟女毛片av久久网站| 亚洲av成人不卡在线观看播放网 | 中国国产av一级| 18在线观看网站| 啦啦啦 在线观看视频| 精品亚洲成a人片在线观看| 大陆偷拍与自拍| 成年动漫av网址| 精品久久久精品久久久| 在线观看国产h片| 精品久久蜜臀av无| 在线观看三级黄色| 最黄视频免费看| 亚洲欧美精品自产自拍| 美女中出高潮动态图| 青春草国产在线视频| 欧美97在线视频| 欧美亚洲日本最大视频资源| 毛片一级片免费看久久久久| 国产亚洲欧美精品永久| 亚洲激情五月婷婷啪啪| 久久久久久久久久久免费av| 国产精品久久久av美女十八| 如何舔出高潮| 日韩成人av中文字幕在线观看| 精品久久久久久电影网| 亚洲人成77777在线视频| 日韩制服丝袜自拍偷拍| 中文字幕精品免费在线观看视频| 各种免费的搞黄视频| 免费人妻精品一区二区三区视频| 男女之事视频高清在线观看 | 久久精品熟女亚洲av麻豆精品| 在线免费观看不下载黄p国产| 国产99久久九九免费精品| 人人妻人人澡人人看| 亚洲人成电影观看| 亚洲欧美成人精品一区二区| 成年av动漫网址| 一区二区三区乱码不卡18| 成人三级做爰电影| 国产熟女午夜一区二区三区| 最新的欧美精品一区二区| 色网站视频免费| 亚洲第一青青草原| 伊人久久大香线蕉亚洲五| 亚洲综合色网址| a级毛片在线看网站| 伦理电影大哥的女人| avwww免费| 亚洲精品在线美女| 国产精品熟女久久久久浪| 亚洲 欧美一区二区三区| 免费久久久久久久精品成人欧美视频| 亚洲美女黄色视频免费看| 国产女主播在线喷水免费视频网站| 国产午夜精品一二区理论片| 亚洲,一卡二卡三卡| 欧美xxⅹ黑人| 成人午夜精彩视频在线观看| 少妇人妻精品综合一区二区| av国产久精品久网站免费入址| 91老司机精品| 亚洲精品乱久久久久久| 十八禁人妻一区二区| 精品免费久久久久久久清纯 | 女人爽到高潮嗷嗷叫在线视频| 日韩制服骚丝袜av| 国产av码专区亚洲av| av视频免费观看在线观看| 久久人人97超碰香蕉20202| av不卡在线播放| 人人澡人人妻人| 啦啦啦在线观看免费高清www| 国产 一区精品| 18禁国产床啪视频网站| tube8黄色片| 久久久久国产精品人妻一区二区| 人人澡人人妻人| 精品午夜福利在线看| 天天操日日干夜夜撸| 午夜免费男女啪啪视频观看| 亚洲欧美激情在线| 国产免费视频播放在线视频| 成人国语在线视频| 日韩av在线免费看完整版不卡| av有码第一页| 在线亚洲精品国产二区图片欧美| 男男h啪啪无遮挡| 中文精品一卡2卡3卡4更新| 波多野结衣一区麻豆| 久久国产精品大桥未久av| 国产精品香港三级国产av潘金莲 | 亚洲国产欧美一区二区综合| 久久人妻熟女aⅴ| 天天躁狠狠躁夜夜躁狠狠躁| 亚洲欧美一区二区三区国产| 亚洲,一卡二卡三卡| 91老司机精品| 亚洲精品乱久久久久久| 国产国语露脸激情在线看| 亚洲av中文av极速乱| 欧美日韩一区二区视频在线观看视频在线| 美女午夜性视频免费| 女人被躁到高潮嗷嗷叫费观| 欧美日韩av久久| av卡一久久| 国产av国产精品国产| 欧美精品一区二区大全| 国产一区有黄有色的免费视频| 国产一级毛片在线| 国产精品免费视频内射| 久久综合国产亚洲精品| av网站在线播放免费| 久久久久精品久久久久真实原创| 夫妻性生交免费视频一级片| 亚洲视频免费观看视频| 精品亚洲乱码少妇综合久久| 97人妻天天添夜夜摸| 日本欧美国产在线视频| 制服人妻中文乱码| 性少妇av在线| 日本av免费视频播放| 亚洲欧美一区二区三区黑人| 中文字幕人妻丝袜一区二区 | 国产一级毛片在线| 国产精品一区二区在线观看99| 精品一品国产午夜福利视频| 一区二区日韩欧美中文字幕| 纵有疾风起免费观看全集完整版| 精品少妇黑人巨大在线播放| 亚洲精品国产av蜜桃| 亚洲国产毛片av蜜桃av| 成人亚洲精品一区在线观看| 亚洲久久久国产精品| 免费观看人在逋| 精品福利永久在线观看| 欧美激情高清一区二区三区 | 国产福利在线免费观看视频| 国产日韩欧美在线精品| av在线老鸭窝| 精品亚洲成国产av| 女人高潮潮喷娇喘18禁视频| 97在线人人人人妻| 男女无遮挡免费网站观看| 亚洲国产精品国产精品| 1024香蕉在线观看| 人人妻人人爽人人添夜夜欢视频| 亚洲,欧美精品.| 国产有黄有色有爽视频| 免费观看人在逋| 亚洲精品视频女| 精品一区二区免费观看| 亚洲精品久久午夜乱码| 美国免费a级毛片| 一区二区三区激情视频| 99久久综合免费| 亚洲情色 制服丝袜| 精品国产一区二区久久| 亚洲美女黄色视频免费看| 亚洲免费av在线视频| 成人黄色视频免费在线看| 国产av精品麻豆| 亚洲国产精品999| 伦理电影免费视频| 亚洲欧美成人综合另类久久久| 亚洲av电影在线进入| 王馨瑶露胸无遮挡在线观看| 秋霞伦理黄片| 建设人人有责人人尽责人人享有的| xxxhd国产人妻xxx| 熟女少妇亚洲综合色aaa.| 成人国产av品久久久| 午夜老司机福利片| 热re99久久国产66热| 欧美av亚洲av综合av国产av | 欧美另类一区| 美女国产高潮福利片在线看| 欧美精品高潮呻吟av久久| 久久99一区二区三区| 国产熟女午夜一区二区三区| 精品少妇久久久久久888优播| 亚洲欧美一区二区三区国产| 热re99久久国产66热| 一级爰片在线观看| 久久天躁狠狠躁夜夜2o2o | 99香蕉大伊视频| 无限看片的www在线观看| 欧美日韩亚洲高清精品| 天天操日日干夜夜撸| 久久久精品94久久精品| 秋霞在线观看毛片| 久久婷婷青草| 高清在线视频一区二区三区| 精品国产露脸久久av麻豆| 国产精品久久久久久人妻精品电影 | 国产片特级美女逼逼视频| 老司机深夜福利视频在线观看 | 成人免费观看视频高清| 日韩一卡2卡3卡4卡2021年| 最近手机中文字幕大全| 午夜激情av网站| 黄片小视频在线播放| 免费不卡黄色视频| 免费看av在线观看网站| 国产在线视频一区二区| 久久久国产一区二区| 国产精品久久久久久精品电影小说| 亚洲图色成人| 国产免费福利视频在线观看| 黑人欧美特级aaaaaa片| 国产亚洲一区二区精品| 午夜福利一区二区在线看| 成人黄色视频免费在线看| 一级毛片我不卡| 久久久精品免费免费高清| 久久精品久久久久久噜噜老黄| www日本在线高清视频| 久久婷婷青草| 亚洲伊人久久精品综合| 蜜桃国产av成人99| 欧美日韩亚洲综合一区二区三区_| 中文精品一卡2卡3卡4更新| 亚洲熟女毛片儿| 性高湖久久久久久久久免费观看| 最近中文字幕高清免费大全6| 18禁国产床啪视频网站| 一级毛片电影观看| 免费少妇av软件| 最新在线观看一区二区三区 | 人人妻,人人澡人人爽秒播 | 欧美少妇被猛烈插入视频| 国产野战对白在线观看| 亚洲欧洲国产日韩| 亚洲图色成人| 性少妇av在线| 天天躁夜夜躁狠狠躁躁| 天天躁夜夜躁狠狠久久av| 国产av国产精品国产| 最近手机中文字幕大全| 赤兔流量卡办理| 久久这里只有精品19| 秋霞在线观看毛片| 成年美女黄网站色视频大全免费| 日日爽夜夜爽网站| 精品一区二区三卡| 久久久精品国产亚洲av高清涩受| 日韩一区二区三区影片| 1024香蕉在线观看| 日本猛色少妇xxxxx猛交久久| 婷婷色av中文字幕| 一级片免费观看大全| 毛片一级片免费看久久久久| 国产不卡av网站在线观看| 成人黄色视频免费在线看| 国产精品久久久久久精品电影小说| 成年动漫av网址| 国产国语露脸激情在线看| 午夜91福利影院| 国产成人午夜福利电影在线观看| 日本vs欧美在线观看视频| 在线观看www视频免费| 天天添夜夜摸| 精品一区二区三区av网在线观看 | 久久狼人影院| 午夜福利视频在线观看免费| 老熟女久久久| 夫妻性生交免费视频一级片| 欧美精品一区二区免费开放| 女人久久www免费人成看片| www.av在线官网国产| 香蕉国产在线看| 午夜激情久久久久久久| 男人舔女人的私密视频| 亚洲av国产av综合av卡| 校园人妻丝袜中文字幕| 考比视频在线观看| 中文精品一卡2卡3卡4更新| 人妻人人澡人人爽人人| av有码第一页| 亚洲国产精品一区三区| 另类亚洲欧美激情| 国产一区亚洲一区在线观看| 999精品在线视频| av有码第一页| av天堂久久9| 丝瓜视频免费看黄片| 只有这里有精品99| 欧美日韩国产mv在线观看视频| 午夜福利一区二区在线看| 国产精品秋霞免费鲁丝片| 精品国产超薄肉色丝袜足j| 成人毛片60女人毛片免费| 色播在线永久视频| 国产成人一区二区在线| 99热国产这里只有精品6| 99九九在线精品视频| 久久毛片免费看一区二区三区| 日本vs欧美在线观看视频| 热re99久久精品国产66热6| 夫妻性生交免费视频一级片| 国产99久久九九免费精品| 美女午夜性视频免费| 极品人妻少妇av视频| 五月天丁香电影| 亚洲成人av在线免费| 免费久久久久久久精品成人欧美视频| 一个人免费看片子| 亚洲国产av影院在线观看| 悠悠久久av| 汤姆久久久久久久影院中文字幕| 国产精品熟女久久久久浪| 国产成人精品在线电影| 中文字幕av电影在线播放| 丝袜喷水一区| e午夜精品久久久久久久| 熟妇人妻不卡中文字幕| 国产欧美日韩综合在线一区二区| 999精品在线视频| 欧美日韩成人在线一区二区| 午夜福利影视在线免费观看| 欧美激情极品国产一区二区三区| 精品一区二区三区av网在线观看 | 精品视频人人做人人爽| 亚洲免费av在线视频| 国产日韩欧美视频二区| 男女下面插进去视频免费观看| av电影中文网址| av有码第一页| 日本av手机在线免费观看| 欧美97在线视频| 少妇的丰满在线观看| 老汉色∧v一级毛片| 这个男人来自地球电影免费观看 | 高清视频免费观看一区二区| 99香蕉大伊视频| 在线免费观看不下载黄p国产| www.熟女人妻精品国产| 亚洲美女视频黄频| 亚洲欧美精品综合一区二区三区| 男人添女人高潮全过程视频| 男女之事视频高清在线观看 | 亚洲第一青青草原| 亚洲一卡2卡3卡4卡5卡精品中文| 亚洲欧洲精品一区二区精品久久久 | 亚洲精品国产区一区二| 久久久久精品人妻al黑| 中国三级夫妇交换| 建设人人有责人人尽责人人享有的| 老司机影院毛片| 国产精品三级大全| 在线亚洲精品国产二区图片欧美| 国产福利在线免费观看视频| 男女边吃奶边做爰视频| 亚洲国产精品国产精品| 波多野结衣一区麻豆| 五月天丁香电影| 亚洲激情五月婷婷啪啪| 啦啦啦啦在线视频资源| 久久精品久久久久久噜噜老黄| av在线app专区| 国产精品人妻久久久影院| h视频一区二区三区| 日韩av免费高清视频| 久久精品亚洲av国产电影网| 国产99久久九九免费精品| 尾随美女入室| svipshipincom国产片| 天天影视国产精品| 操美女的视频在线观看| 久久久久久人妻| 在线精品无人区一区二区三| 欧美日韩亚洲国产一区二区在线观看 | 亚洲国产欧美一区二区综合| 下体分泌物呈黄色| av.在线天堂| 国产1区2区3区精品| 欧美变态另类bdsm刘玥| 777米奇影视久久| 午夜福利视频在线观看免费| 国产一区二区三区av在线| av女优亚洲男人天堂| 亚洲成人av在线免费| 中国国产av一级| 久久精品熟女亚洲av麻豆精品| 看非洲黑人一级黄片| 韩国高清视频一区二区三区| 电影成人av| 五月天丁香电影| 欧美日韩一区二区视频在线观看视频在线| 久久韩国三级中文字幕| 91精品三级在线观看| 伦理电影免费视频| 另类亚洲欧美激情| 色视频在线一区二区三区| 波野结衣二区三区在线| 777久久人妻少妇嫩草av网站| 超色免费av| 如何舔出高潮| 如日韩欧美国产精品一区二区三区| 韩国高清视频一区二区三区| 国产女主播在线喷水免费视频网站| 王馨瑶露胸无遮挡在线观看| 在线观看国产h片| 国产亚洲av片在线观看秒播厂| 国产精品无大码| 五月天丁香电影| 精品国产一区二区三区久久久樱花| 国产1区2区3区精品| 捣出白浆h1v1| 久久综合国产亚洲精品| 久久毛片免费看一区二区三区| √禁漫天堂资源中文www| 天天躁狠狠躁夜夜躁狠狠躁| 日韩 亚洲 欧美在线| 成年动漫av网址| 欧美老熟妇乱子伦牲交| www.熟女人妻精品国产| 国产淫语在线视频| 又粗又硬又长又爽又黄的视频| 国产免费又黄又爽又色| 国产男人的电影天堂91| 在线观看www视频免费| 少妇被粗大的猛进出69影院| 亚洲精品国产一区二区精华液| 嫩草影视91久久| 国产熟女午夜一区二区三区| 亚洲精品国产区一区二| 欧美日韩成人在线一区二区| 韩国av在线不卡| 国产极品天堂在线| 成年女人毛片免费观看观看9 | 中文字幕人妻熟女乱码| 一边摸一边做爽爽视频免费| 亚洲美女黄色视频免费看| 蜜桃国产av成人99| 国产熟女午夜一区二区三区| www.自偷自拍.com| 如日韩欧美国产精品一区二区三区| 亚洲专区中文字幕在线 | 精品亚洲成a人片在线观看| 国产成人欧美在线观看 | 韩国精品一区二区三区| 国产麻豆69| 男人舔女人的私密视频| 午夜av观看不卡| 久久久久国产精品人妻一区二区| 满18在线观看网站| a 毛片基地| 中文欧美无线码| 999精品在线视频| 精品久久久久久电影网| 丁香六月天网| 中文字幕色久视频| 久热这里只有精品99| 91老司机精品| 日韩熟女老妇一区二区性免费视频| 日韩免费高清中文字幕av| 男女下面插进去视频免费观看| 久久人人爽人人片av| 亚洲色图 男人天堂 中文字幕| 熟妇人妻不卡中文字幕| 中国三级夫妇交换| 极品少妇高潮喷水抽搐| 香蕉国产在线看| 久久精品国产a三级三级三级| 十分钟在线观看高清视频www| 成年动漫av网址| 色视频在线一区二区三区| 亚洲av日韩精品久久久久久密 | 成人漫画全彩无遮挡| 美女高潮到喷水免费观看| 男男h啪啪无遮挡| 国产精品一区二区在线观看99| 亚洲国产欧美网| 免费女性裸体啪啪无遮挡网站| a 毛片基地| 婷婷色麻豆天堂久久| 亚洲av综合色区一区| 一区二区av电影网| 欧美av亚洲av综合av国产av | 欧美97在线视频| 青春草亚洲视频在线观看| 熟女av电影| 热re99久久国产66热| 欧美xxⅹ黑人| 女人爽到高潮嗷嗷叫在线视频| 免费观看人在逋| 国产精品99久久99久久久不卡 | 国产无遮挡羞羞视频在线观看| 日本色播在线视频| 老汉色∧v一级毛片| 99久久精品国产亚洲精品| 日本欧美视频一区| 久久久久人妻精品一区果冻| 精品酒店卫生间| 国产精品久久久久成人av| 汤姆久久久久久久影院中文字幕| 悠悠久久av| 十分钟在线观看高清视频www| h视频一区二区三区| 我的亚洲天堂| 99国产精品免费福利视频| 国产成人免费无遮挡视频| 成年美女黄网站色视频大全免费| 午夜激情av网站| 亚洲av中文av极速乱| 97精品久久久久久久久久精品| 91aial.com中文字幕在线观看| 女人被躁到高潮嗷嗷叫费观| 日本vs欧美在线观看视频| 99久久人妻综合| 各种免费的搞黄视频| 欧美黑人精品巨大| 色视频在线一区二区三区| 成人亚洲欧美一区二区av| 亚洲精品日本国产第一区| 亚洲色图 男人天堂 中文字幕| videos熟女内射| 伦理电影免费视频| 波野结衣二区三区在线| 国产精品免费视频内射| 久久久久精品久久久久真实原创| 国产淫语在线视频| 一区二区三区四区激情视频| 男女免费视频国产| 久久久久久免费高清国产稀缺| 亚洲av男天堂| 国产成人午夜福利电影在线观看| 91精品国产国语对白视频| 国产女主播在线喷水免费视频网站| 久久久久久免费高清国产稀缺| 成人国语在线视频|