• <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涩爱| 亚洲七黄色美女视频| 母亲3免费完整高清在线观看| 亚洲国产av影院在线观看| 国产亚洲午夜精品一区二区久久| 欧美精品啪啪一区二区三区 | 亚洲专区国产一区二区| 久久狼人影院| 国产有黄有色有爽视频| 国产不卡av网站在线观看| 国产高清国产精品国产三级| av网站在线播放免费| 亚洲国产av影院在线观看| 亚洲国产av新网站| 嫁个100分男人电影在线观看 | 午夜久久久在线观看| 一级毛片电影观看| 久久青草综合色| 丝袜美足系列| av电影中文网址| 免费在线观看视频国产中文字幕亚洲 | 最近中文字幕2019免费版| 永久免费av网站大全| 亚洲五月婷婷丁香| 国产人伦9x9x在线观看| 一级a爱视频在线免费观看| 国产真人三级小视频在线观看| 国产高清不卡午夜福利| 爱豆传媒免费全集在线观看| 在线 av 中文字幕| 午夜福利乱码中文字幕| 亚洲av国产av综合av卡| 精品第一国产精品| 亚洲五月色婷婷综合| 国产精品香港三级国产av潘金莲 | 亚洲精品第二区| 青春草视频在线免费观看| 中文字幕另类日韩欧美亚洲嫩草| 高清av免费在线| 欧美人与性动交α欧美软件| 青春草视频在线免费观看| 51午夜福利影视在线观看| 七月丁香在线播放| 午夜福利影视在线免费观看| 天天躁狠狠躁夜夜躁狠狠躁| 国产成人精品无人区| 亚洲成国产人片在线观看| 99久久综合免费| 三上悠亚av全集在线观看| 亚洲国产毛片av蜜桃av| 国产又爽黄色视频| 久久久国产欧美日韩av| videos熟女内射| 久久精品aⅴ一区二区三区四区| 亚洲视频免费观看视频| 精品人妻熟女毛片av久久网站| 美女高潮到喷水免费观看| 精品国产一区二区三区久久久樱花| 亚洲国产欧美一区二区综合| 国产精品秋霞免费鲁丝片| 中文精品一卡2卡3卡4更新| 青春草亚洲视频在线观看| 久久99热这里只频精品6学生| 亚洲欧美清纯卡通| 99热全是精品| 国产爽快片一区二区三区| 男人添女人高潮全过程视频| 最近最新中文字幕大全免费视频 | 国产又色又爽无遮挡免| 一级片免费观看大全| av又黄又爽大尺度在线免费看| 我要看黄色一级片免费的| 久久久国产欧美日韩av| 人成视频在线观看免费观看| 国产亚洲欧美精品永久| www日本在线高清视频| 国产日韩欧美在线精品| 日韩av在线免费看完整版不卡| 多毛熟女@视频| 女性被躁到高潮视频| 亚洲欧美色中文字幕在线| 国产亚洲精品久久久久5区| 成人国产av品久久久| 桃花免费在线播放| 曰老女人黄片| 亚洲成人国产一区在线观看 | 欧美+亚洲+日韩+国产| 视频区欧美日本亚洲| 亚洲av成人精品一二三区| 午夜日韩欧美国产| tube8黄色片| 你懂的网址亚洲精品在线观看| 国产欧美日韩综合在线一区二区| videos熟女内射| 免费观看av网站的网址| 亚洲国产看品久久| 久久久精品免费免费高清| 亚洲成av片中文字幕在线观看| 香蕉丝袜av| 成年人黄色毛片网站| 最新在线观看一区二区三区 | 91精品伊人久久大香线蕉| 午夜激情av网站| 午夜精品国产一区二区电影| 成年动漫av网址| 免费高清在线观看日韩| 中国美女看黄片| 各种免费的搞黄视频| 黄色毛片三级朝国网站| 在线观看一区二区三区激情| 国产成人影院久久av| 91老司机精品| 久久精品国产a三级三级三级| 色网站视频免费| 爱豆传媒免费全集在线观看| 亚洲成人免费电影在线观看 | 无限看片的www在线观看| 国产精品麻豆人妻色哟哟久久| 久久精品国产亚洲av高清一级| 国产激情久久老熟女| 少妇 在线观看| 亚洲男人天堂网一区| 观看av在线不卡| 美女福利国产在线| 巨乳人妻的诱惑在线观看| 纵有疾风起免费观看全集完整版| xxxhd国产人妻xxx| 无遮挡黄片免费观看| 亚洲黑人精品在线| 欧美大码av| 亚洲国产欧美日韩在线播放| 国产免费福利视频在线观看| 男女高潮啪啪啪动态图| 欧美 日韩 精品 国产| 人人妻人人澡人人爽人人夜夜| 成人国产av品久久久| 精品一区在线观看国产| 18禁观看日本| 欧美在线一区亚洲| 亚洲精品久久午夜乱码| 国产一区有黄有色的免费视频| 国产精品 国内视频| 91老司机精品| 国产在线观看jvid| 丝袜人妻中文字幕| 国产成人a∨麻豆精品| videos熟女内射| 亚洲黑人精品在线| 久久国产亚洲av麻豆专区| 国产亚洲精品第一综合不卡| 在线观看免费日韩欧美大片| 精品久久久精品久久久| a级片在线免费高清观看视频| 免费观看a级毛片全部| 午夜日韩欧美国产| 国产又色又爽无遮挡免| 操美女的视频在线观看| 99热全是精品| 亚洲av电影在线进入| 午夜激情久久久久久久| 久久久久久免费高清国产稀缺| 性高湖久久久久久久久免费观看| 大片电影免费在线观看免费| 一区二区三区激情视频| 中文字幕人妻丝袜制服| 高潮久久久久久久久久久不卡| 韩国精品一区二区三区| 丝袜人妻中文字幕| 亚洲精品国产av成人精品| 午夜福利一区二区在线看| 制服诱惑二区| 曰老女人黄片| 亚洲国产日韩一区二区| 极品人妻少妇av视频| 中文字幕高清在线视频| 高清欧美精品videossex| 亚洲精品国产一区二区精华液| 色播在线永久视频| 晚上一个人看的免费电影| 亚洲,欧美精品.| 国产成人精品久久久久久| bbb黄色大片| 国产视频首页在线观看| 一级毛片我不卡| 欧美日韩亚洲高清精品| 欧美黑人欧美精品刺激| 国产精品偷伦视频观看了| 日本av手机在线免费观看| 天堂俺去俺来也www色官网| 成人午夜精彩视频在线观看| 国产成人精品无人区| 少妇的丰满在线观看| 王馨瑶露胸无遮挡在线观看| 纯流量卡能插随身wifi吗| 捣出白浆h1v1| 久久99精品国语久久久| 国产人伦9x9x在线观看| 中文乱码字字幕精品一区二区三区| 赤兔流量卡办理| 人人妻人人澡人人看| 久久精品亚洲熟妇少妇任你| 性高湖久久久久久久久免费观看| 国产激情久久老熟女| 欧美日韩亚洲高清精品| 一级,二级,三级黄色视频| 啦啦啦视频在线资源免费观看| 免费少妇av软件| 成年人黄色毛片网站| 亚洲精品国产av成人精品| 亚洲精品一二三| 视频区图区小说| 老司机影院成人| 在线观看免费视频网站a站| 婷婷色综合大香蕉| 亚洲欧美精品综合一区二区三区| 久久中文字幕一级| 两个人看的免费小视频| h视频一区二区三区| 欧美日韩一级在线毛片| 又紧又爽又黄一区二区| 人体艺术视频欧美日本| 日本av手机在线免费观看| 日韩制服丝袜自拍偷拍| 国产日韩欧美亚洲二区| 少妇猛男粗大的猛烈进出视频| 美女国产高潮福利片在线看| 91成人精品电影| 香蕉丝袜av| 七月丁香在线播放| 欧美乱码精品一区二区三区| 精品亚洲成a人片在线观看| 久久中文字幕一级| 首页视频小说图片口味搜索 | 久久毛片免费看一区二区三区| 母亲3免费完整高清在线观看| 亚洲精品国产一区二区精华液| 美女国产高潮福利片在线看| 精品一区二区三卡| 欧美精品一区二区大全| 欧美国产精品一级二级三级| 无遮挡黄片免费观看| 欧美日韩视频精品一区| 一二三四在线观看免费中文在| 亚洲成色77777| 激情五月婷婷亚洲| 丁香六月天网| 亚洲欧洲国产日韩| 国产成人欧美| 免费人妻精品一区二区三区视频| 黄色视频在线播放观看不卡| 免费高清在线观看日韩| 黑人欧美特级aaaaaa片| 久久亚洲精品不卡| 日本wwww免费看| 一级黄色大片毛片| 人成视频在线观看免费观看| 免费在线观看视频国产中文字幕亚洲 | 1024香蕉在线观看| 日韩av免费高清视频| 午夜精品国产一区二区电影| 又大又爽又粗| 国产精品99久久99久久久不卡| 90打野战视频偷拍视频| 免费在线观看日本一区| 久久av网站| 中文精品一卡2卡3卡4更新| 午夜精品国产一区二区电影| 18在线观看网站| 一级毛片我不卡| 男女无遮挡免费网站观看| 视频区图区小说| 亚洲成人免费电影在线观看 | 建设人人有责人人尽责人人享有的| 男女之事视频高清在线观看 | 亚洲av美国av| 国产人伦9x9x在线观看| h视频一区二区三区| 日韩一卡2卡3卡4卡2021年| 国产日韩欧美视频二区| 老鸭窝网址在线观看| 一区二区三区乱码不卡18| 九草在线视频观看| 国产精品一区二区免费欧美 | 欧美精品一区二区大全| 久久精品亚洲熟妇少妇任你| 你懂的网址亚洲精品在线观看| 啦啦啦在线免费观看视频4| 久久毛片免费看一区二区三区| 一本色道久久久久久精品综合| 纯流量卡能插随身wifi吗| 汤姆久久久久久久影院中文字幕| 在线 av 中文字幕| 精品免费久久久久久久清纯 | 国产精品久久久久久人妻精品电影 | 欧美人与性动交α欧美精品济南到| 丝袜脚勾引网站| 久久人妻福利社区极品人妻图片 | 久久女婷五月综合色啪小说| 真人做人爱边吃奶动态| av有码第一页| 日日爽夜夜爽网站| 久久鲁丝午夜福利片| 男女高潮啪啪啪动态图| 精品一区二区三卡| 精品欧美一区二区三区在线| 天天躁狠狠躁夜夜躁狠狠躁| 十分钟在线观看高清视频www| 久久久久久久大尺度免费视频| 超色免费av| 下体分泌物呈黄色| 欧美xxⅹ黑人| 日本欧美国产在线视频| 亚洲欧美精品自产自拍| 2021少妇久久久久久久久久久| 男女床上黄色一级片免费看| 久久这里只有精品19| 国产精品成人在线| 亚洲国产av新网站| 亚洲自偷自拍图片 自拍| 国产av一区二区精品久久| 久久99精品国语久久久| 久久 成人 亚洲| tube8黄色片| 亚洲精品日韩在线中文字幕| 真人做人爱边吃奶动态| 午夜福利视频在线观看免费| 电影成人av| 亚洲色图综合在线观看| 天天躁狠狠躁夜夜躁狠狠躁| 国产精品国产三级专区第一集| 免费一级毛片在线播放高清视频 | 日本a在线网址| 99久久综合免费| 黄色视频不卡| 啦啦啦中文免费视频观看日本| 亚洲精品一二三| 一级毛片电影观看| 久久久精品免费免费高清| 成人三级做爰电影| 午夜福利乱码中文字幕| 国产精品 欧美亚洲| 91成人精品电影| 极品人妻少妇av视频| 亚洲 国产 在线| 婷婷色综合大香蕉| 欧美日韩亚洲高清精品| 国产欧美日韩综合在线一区二区| 黄色 视频免费看| 一区二区三区精品91| 亚洲专区国产一区二区| 老鸭窝网址在线观看| 男人爽女人下面视频在线观看| 黄频高清免费视频| 日本欧美国产在线视频| 国产成人精品久久二区二区91| 久久精品亚洲熟妇少妇任你| 国产成人精品久久二区二区91| 免费在线观看视频国产中文字幕亚洲 | 免费观看人在逋| 99久久99久久久精品蜜桃| 五月开心婷婷网| 亚洲精品久久午夜乱码| 国产在线免费精品| 大片免费播放器 马上看| 亚洲av日韩精品久久久久久密 | 人妻 亚洲 视频| 日本猛色少妇xxxxx猛交久久| 欧美+亚洲+日韩+国产| 纵有疾风起免费观看全集完整版| 一本综合久久免费| 亚洲av日韩精品久久久久久密 | 99久久精品国产亚洲精品| 国产亚洲午夜精品一区二区久久| 久久久久国产一级毛片高清牌| 亚洲欧美日韩另类电影网站| 女人久久www免费人成看片| 大片电影免费在线观看免费| 亚洲国产欧美日韩在线播放| 日本a在线网址| 亚洲欧美日韩高清在线视频 | xxx大片免费视频| 老司机靠b影院| 精品福利永久在线观看| av国产精品久久久久影院| 午夜福利乱码中文字幕| 黄色片一级片一级黄色片| 一二三四在线观看免费中文在| 亚洲av电影在线进入| 久久久久久久久免费视频了| 国产精品国产av在线观看| www.熟女人妻精品国产| 国产伦理片在线播放av一区| 丰满人妻熟妇乱又伦精品不卡| av视频免费观看在线观看| 男女国产视频网站| 天天躁狠狠躁夜夜躁狠狠躁| 亚洲天堂av无毛| 欧美精品一区二区大全| 国产精品一区二区在线不卡| 欧美日韩亚洲高清精品| 欧美精品一区二区大全| 精品少妇内射三级| 宅男免费午夜| 91麻豆av在线| 韩国精品一区二区三区| 国产精品成人在线| 亚洲国产精品成人久久小说| 人妻一区二区av| 一级毛片 在线播放| 一区二区三区激情视频| 久久人妻福利社区极品人妻图片 | tube8黄色片| 又大又黄又爽视频免费| 欧美精品亚洲一区二区| 夫妻性生交免费视频一级片| 久久国产精品人妻蜜桃| 欧美97在线视频| 18禁黄网站禁片午夜丰满| 亚洲精品第二区| 成年美女黄网站色视频大全免费| 久久精品久久精品一区二区三区| 国产精品久久久人人做人人爽| 色婷婷av一区二区三区视频| 久久久久久免费高清国产稀缺| 纵有疾风起免费观看全集完整版| 国产免费一区二区三区四区乱码| 亚洲精品美女久久久久99蜜臀 | 午夜免费男女啪啪视频观看| 精品久久蜜臀av无| 亚洲精品国产av蜜桃| 一区二区三区精品91| 国产精品久久久久久精品电影小说| 亚洲av电影在线进入| 亚洲欧美日韩高清在线视频 | 老司机深夜福利视频在线观看 | 男女免费视频国产| 午夜日韩欧美国产| 国产一区二区三区综合在线观看| 国产视频首页在线观看| 欧美在线黄色| 亚洲av成人精品一二三区| 老汉色∧v一级毛片| 只有这里有精品99| 91麻豆精品激情在线观看国产 | 另类亚洲欧美激情| 日韩大片免费观看网站| 男人舔女人的私密视频| 欧美日韩视频精品一区| 久久国产精品影院| 亚洲一码二码三码区别大吗| av电影中文网址| 成人亚洲精品一区在线观看| 50天的宝宝边吃奶边哭怎么回事| 日韩欧美一区视频在线观看| 色综合欧美亚洲国产小说| 丁香六月天网| 少妇人妻 视频| 亚洲国产欧美日韩在线播放| 十八禁人妻一区二区| 黄色视频在线播放观看不卡| 纵有疾风起免费观看全集完整版| 亚洲国产最新在线播放| 黄色一级大片看看| 9色porny在线观看| 亚洲伊人色综图| 亚洲国产精品一区二区三区在线| 一级毛片女人18水好多 | 日韩 欧美 亚洲 中文字幕| 久久九九热精品免费| 久久人人爽人人片av| 大话2 男鬼变身卡| 一级毛片女人18水好多 | 久久天躁狠狠躁夜夜2o2o | 精品一区二区三卡| 国产97色在线日韩免费| 建设人人有责人人尽责人人享有的| 亚洲av日韩在线播放| 丰满少妇做爰视频| 国产91精品成人一区二区三区 | 国产日韩欧美亚洲二区| 亚洲精品久久久久久婷婷小说| 国产精品久久久久久精品电影小说| 日本黄色日本黄色录像| 国产高清国产精品国产三级| av在线app专区| 精品国产一区二区久久| 欧美日韩精品网址| 久久99一区二区三区| 久久久久久久久免费视频了| 国产精品久久久人人做人人爽| 后天国语完整版免费观看| 午夜两性在线视频| 午夜福利免费观看在线| 黄色毛片三级朝国网站| 精品人妻熟女毛片av久久网站| 亚洲国产中文字幕在线视频| 欧美av亚洲av综合av国产av| 中文欧美无线码| 美女高潮到喷水免费观看| 国产激情久久老熟女| 国产在线观看jvid| 男人操女人黄网站| 国产亚洲av高清不卡| 久久久亚洲精品成人影院| av国产久精品久网站免费入址| 女人久久www免费人成看片| 久久久精品94久久精品| h视频一区二区三区| 日本猛色少妇xxxxx猛交久久| 亚洲国产精品国产精品| 日本wwww免费看| 国产视频一区二区在线看| av网站免费在线观看视频| 亚洲中文日韩欧美视频| 波野结衣二区三区在线| 国产成人精品久久二区二区免费| 蜜桃在线观看..| 国产片内射在线| 亚洲欧美色中文字幕在线| 一本—道久久a久久精品蜜桃钙片| 免费看av在线观看网站| 青草久久国产| 99久久综合免费| 中文字幕人妻丝袜一区二区| 亚洲综合色网址| 在线观看免费视频网站a站| 日韩av免费高清视频| 亚洲av在线观看美女高潮| 亚洲国产av影院在线观看| 麻豆乱淫一区二区| 欧美精品人与动牲交sv欧美| 黄色视频在线播放观看不卡| 99精国产麻豆久久婷婷| 中文字幕高清在线视频| 国产伦理片在线播放av一区| 成人18禁高潮啪啪吃奶动态图| videos熟女内射| 18禁裸乳无遮挡动漫免费视频| 久久久久国产精品人妻一区二区| 国产黄色免费在线视频| 国产精品国产三级国产专区5o| 欧美xxⅹ黑人| 男人爽女人下面视频在线观看| 免费高清在线观看日韩| av电影中文网址| 亚洲欧美一区二区三区黑人| 精品国产国语对白av| 大陆偷拍与自拍| 免费在线观看日本一区| 日韩熟女老妇一区二区性免费视频| 午夜福利视频精品| 欧美黑人欧美精品刺激| 国产av国产精品国产| 欧美在线黄色| 夫妻午夜视频| 亚洲第一青青草原| 夫妻午夜视频| 亚洲国产精品999| 午夜激情久久久久久久| 男女午夜视频在线观看| 久久久久国产一级毛片高清牌| www.自偷自拍.com| 国产成人欧美在线观看 | 美女国产高潮福利片在线看| 大陆偷拍与自拍| 不卡av一区二区三区| 午夜福利在线免费观看网站| av不卡在线播放| 交换朋友夫妻互换小说| 咕卡用的链子| 国产成人精品久久久久久| 国产免费一区二区三区四区乱码| 欧美日韩亚洲综合一区二区三区_| 校园人妻丝袜中文字幕| 亚洲成色77777| 中文字幕精品免费在线观看视频| 国产在线免费精品| 99九九在线精品视频| 捣出白浆h1v1| 精品卡一卡二卡四卡免费| 十八禁网站网址无遮挡| 99久久综合免费| 久久人妻熟女aⅴ| 少妇猛男粗大的猛烈进出视频| 国产高清不卡午夜福利| 看免费av毛片| 夫妻性生交免费视频一级片| 久久人人爽av亚洲精品天堂| 性高湖久久久久久久久免费观看| 一区二区三区乱码不卡18| 90打野战视频偷拍视频| 2021少妇久久久久久久久久久| 精品人妻熟女毛片av久久网站| 午夜福利视频精品| 18禁国产床啪视频网站| 青青草视频在线视频观看| 午夜福利免费观看在线| 啦啦啦中文免费视频观看日本| 成在线人永久免费视频| 青春草亚洲视频在线观看| 黄色视频不卡| 美国免费a级毛片| 19禁男女啪啪无遮挡网站| 制服人妻中文乱码| 久久久欧美国产精品| av国产精品久久久久影院| 亚洲,欧美,日韩| av电影中文网址| 日韩人妻精品一区2区三区| 亚洲自偷自拍图片 自拍| 少妇裸体淫交视频免费看高清 | 亚洲精品乱久久久久久| 日本欧美国产在线视频| 日韩大码丰满熟妇| 悠悠久久av|