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

xiaoguozi's Blog
Pay it forword - 我并不覺的自豪,我所嘗試的事情都失敗了······習(xí)慣原本生活的人不容易改變,就算現(xiàn)狀很糟,他們也很難改變,在過程中,他們還是放棄了······他們一放棄,大家就都是輸家······讓愛傳出去,很困難,也無法預(yù)料,人們需要更細(xì)心的觀察別人,要隨時(shí)注意才能保護(hù)別人,因?yàn)樗麄兾幢刂雷约阂裁础ぁぁぁぁ?/span>

在計(jì)算機(jī)圖形運(yùn)算中,常常要將浮點(diǎn)數(shù)轉(zhuǎn)換為整數(shù),例如在圖像的光柵化階段,就要執(zhí)行大量的類型轉(zhuǎn)換,以便將浮點(diǎn)數(shù)表示的坐標(biāo)轉(zhuǎn)化為整數(shù)表示的屏幕坐標(biāo)。Ok,it's so easy:
----------------------------------------------------------------------------------------
//
// 強(qiáng)制類型轉(zhuǎn)換
// 小數(shù)部分將被裁剪掉
//
int_val = (int)float_val;
----------------------------------------------------------------------------------------
嘿嘿,很高興你居然和我一樣單純!這個(gè)操作實(shí)在是太TINY了,以至于我從來沒想過它是怎么實(shí)現(xiàn)的,直到某天某個(gè)家伙跟我說,不要使用標(biāo)準(zhǔn)C類型轉(zhuǎn)換,因?yàn)槟翘耍∥耶?dāng)時(shí)的震驚不下于倒霉的冒險(xiǎn)者遇上了龍。

標(biāo)準(zhǔn)C類型轉(zhuǎn)換最大的優(yōu)點(diǎn)是,它是獨(dú)立于平臺的,無論是在X86上跑,還是在PowerPC上跑,你什么都不用擔(dān)心,編譯器會為你搞定一切。而這也恰恰是它最大的缺點(diǎn)——嚴(yán)重依賴于編譯器的實(shí)現(xiàn)。而實(shí)際測試表明,編譯器所生成的代碼,其速度實(shí)在不盡人意。

一個(gè)替代的方法是直接對數(shù)據(jù)位進(jìn)行操作。如果你對IEEE浮點(diǎn)數(shù)的表示法比較熟悉的話(如果你壓根什么都不知道,請先查閱文末附錄中的資料),這是顯而易見的。它提取指數(shù)和尾數(shù),然后對尾數(shù)執(zhí)行移位操作。代碼如下:
----------------------------------------------------------------------------------------
//
// 將32位浮點(diǎn)數(shù)fval轉(zhuǎn)換為32位整數(shù)并存儲在ival中
// 小數(shù)部分將被裁剪掉
//
void TruncToInt32 (int &ival, float fval)
{
ival = *(int *)&fval;

// 提取尾數(shù)
// 注意實(shí)際的尾數(shù)前面還有一個(gè)被省略掉的1
int mantissa = (ival & 0x07fffff) | 0x800000;

// 提取指數(shù)
// 以23分界,指數(shù)大于23則左移,否則右移
// 由于指數(shù)用偏移表示,所以23+127=150
int exponent = 150 - ((ival >> 23) & 0xff);

if (exponent < 0)
ival = (mantissa << -exponent);
else
ival = (mantissa >> exponent);

// 如果小于0,則將結(jié)果取反
if ((*(int *)&fval) & 0x80000000)
ival = -ival;
}
----------------------------------------------------------------------------------------
該函數(shù)有一個(gè)BUG,那就是當(dāng)fval=0時(shí),返回值是2。原因是對于語句mantissa>>exponent,編譯器使用了循環(huán)移位指令。解決方法是要么對0作特殊處理,要么直接用匯編來實(shí)現(xiàn)。

這個(gè)函數(shù)比標(biāo)準(zhǔn)的C轉(zhuǎn)換要快,而且由于整個(gè)過程只使用了整數(shù)運(yùn)算,可以和FPU并行運(yùn)行。但缺點(diǎn)是,(1)依賴于硬件平臺。例如根據(jù)小尾和大尾順序的不同,要相應(yīng)地修改函數(shù)。(2)對于float和double要使用不同的實(shí)現(xiàn),因?yàn)槎叩臄?shù)據(jù)位不同。(3)對于float,只能保留24位有效值,盡管int有32位。

更快的方法是使用FPU指令FISTP,它將棧中的浮點(diǎn)數(shù)彈出并保存為整數(shù):
----------------------------------------------------------------------------------------
//
// 將64位浮點(diǎn)數(shù)fval轉(zhuǎn)換為32位整數(shù)并存儲在ival中
// 小數(shù)部分將四舍五入到偶數(shù)
//
inline void RoundToIntFPU (int &ival, double fval)
{
_asm
{
fld fval
mov edx, dword ptr [ival]
fistp dword ptr [edx]
}
}
----------------------------------------------------------------------------------------
很好,無論速度還是精度似乎都相當(dāng)令人滿意。但如果換一個(gè)角度來看的話,fistp指令需要6個(gè)cycle,而浮點(diǎn)數(shù)乘法才僅僅需要3個(gè)cycle!更糟的是,當(dāng)fistp運(yùn)行的時(shí)候,它必須占用FPU,也就是說,其他的浮點(diǎn)運(yùn)算將不能執(zhí)行。僅僅為了一次類型轉(zhuǎn)換操作就要付出如此大的代價(jià),光想想就覺得心疼。

當(dāng)然,它也有很多優(yōu)點(diǎn):更快的速度,更精確的數(shù)值(四舍五入到偶數(shù)),更強(qiáng)的適用性(float和double均可)。要注意的是,F(xiàn)PU默認(rèn)的四舍五入到偶數(shù)(round to even)和我們平常所說的四舍五入(round)是不同的。二者的區(qū)別在于對中間值的處理上。考慮十進(jìn)制的3.5和4.5。四舍五入到偶數(shù)是使其趨向于鄰近的偶數(shù),所以舍入的結(jié)果是3.5->4,4.5->4;而傳統(tǒng)的四舍五入則是3.5->4,4.5->5。四舍五入到偶數(shù)可以產(chǎn)生更精確,更穩(wěn)定的數(shù)值。

除此之外,還有更好,更快的方法嗎?有的,那就是華麗的 Magic Number !

請看下面的函數(shù):
----------------------------------------------------------------------------------------
//
// 將64位浮點(diǎn)數(shù)轉(zhuǎn)換為32位整數(shù)
// 小數(shù)部分將四舍五入到偶數(shù)
//
inline void RoundToInt64 (int &val, double dval)
{
static double magic = 6755399441055744.0;
dval += magic;
val = *(int*)&dval;
}
----------------------------------------------------------------------------------------
快,這就是它最偉大的地方!你所需要的僅僅是一次浮點(diǎn)數(shù)加法,你還能再奢望些什么呢?

當(dāng)然,絕對不要使用莫名其妙的代碼,現(xiàn)在馬上就讓我們來看看它是怎么變的戲法。

首先,我們要搞清楚FPU是怎樣執(zhí)行浮點(diǎn)數(shù)加法的。考慮一下8.75加2^23。8.75的二進(jìn)制表示是1000.11,轉(zhuǎn)化為IEEE標(biāo)準(zhǔn)浮點(diǎn)數(shù)格式是1.00011*2^3。假設(shè)二者均是32位的float,它們在內(nèi)存中的存儲為:
----------------------------------------------------------------------------------------
符號位(31), 指數(shù)(30-23), 尾數(shù)(22-0)

8.75: 0, 10000010, 0001 1000 0000 0000 0000 000

2^23: 0, 10010110,0000 0000 0000 0000 0000 000
----------------------------------------------------------------------------------------
FPU所執(zhí)行的操作是:(1)提升指數(shù)較小者的指數(shù),使二者指數(shù)相同;(2)將二者的尾數(shù)相加;(3)將結(jié)果規(guī)整為標(biāo)準(zhǔn)格式。讓我們具體來看看整個(gè)過程:
----------------------------------------------------------------------------------------
1,提升8.75的指數(shù),尾數(shù)要相應(yīng)地右移23-3=20位:

8.75 = 1.00011*2^3 = .0000000000000000000100011*2^23

2,將二者相加。必須注意的是,
   由于float只有23位尾數(shù),所以8.75的低位被移除掉了:

8.75: 0, 10010110, 0000 0000 0000 0000 0001 000
 +
2^23: 0, 10010110,0000 0000 0000 0000 0000 000
 =
0, 10010110, 0000 0000 0000 0000 0001 000

3,將規(guī)整為標(biāo)準(zhǔn)格式:

別忘了2^23還有個(gè)前導(dǎo)1,所以結(jié)果是規(guī)整的,無需執(zhí)行任何操作
----------------------------------------------------------------------------------------
你發(fā)現(xiàn)什么了嗎?不錯(cuò),將結(jié)果的尾數(shù)部分提取出來,正是int(8.75)!是的,magic number的奧妙就在這里,通過迫使FPU將尾數(shù)移位,從而獲得我們需要的結(jié)果。

但是別高興得太早,讓我們來看看負(fù)數(shù)的情況。以-8.75為例,-8.75加2^23相當(dāng)于2^23減去8.75,過程如下:
----------------------------------------------------------------------------------------
2^23: 0, 10010110,0000 0000 0000 0000 0000 000
 -
8.75: 0, 10010110, 0000 0000 0000 0000 0001 000
 =
0, 10010110, 1111 1111 1111 1111 1110 000
----------------------------------------------------------------------------------------
很好,尾數(shù)部分正是int(-8.75)=-8的補(bǔ)碼。然而,2^23的前導(dǎo)1在減法過程中被借位了,所以結(jié)果的尾數(shù)前面并沒有1,F(xiàn)PU將執(zhí)行規(guī)整操作,最后我們得到的是:
----------------------------------------------------------------------------------------
0, 10010110, 1111 1111 1111 1111 1100 000
----------------------------------------------------------------------------------------
功虧一簣!等等,如果將2^23的尾數(shù)的最高位置1,那么在減法過程中不就可以保全前導(dǎo)1了嗎?完全正確,這就是我們需要的。所以最后的magic number是0,10010110,1000 0000 0000 0000 0000 000,也就是1.5*2^23。

然而,我們要清楚這個(gè)方法的一些局限性。首先,在將結(jié)果的float值保存為整數(shù)時(shí),我們需要使用某些mask值將22-31位屏蔽掉。其次,float只能保有最多23位的有效值,在將尾數(shù)最高位置1后,有效值更是降到了22位,這意味著我們對大于2^23-1的數(shù)值無能為力。

相比之下,如果我們只處理double,那么所有的問題就都迎刃而解了。首先,double的指數(shù)位,符號位和尾數(shù)的最高位全部都在高32位,無需屏蔽操作。其次,double有多達(dá)52位的尾數(shù),對于32位的int來說,實(shí)在是太奢侈了!

用于double的magic number是1.5*2^52=6755399441055744.0,推導(dǎo)過程是一樣的。

根據(jù)同樣的原理,我們還可以計(jì)算出將float和double轉(zhuǎn)化為定點(diǎn)數(shù)的magic number。例如對于16-16的定點(diǎn)數(shù),尾數(shù)右移的位數(shù)比原先轉(zhuǎn)化為整數(shù)時(shí)要少16,所以對于double來說,相應(yīng)的magic number就是1.5*2^36。如果要轉(zhuǎn)化為8-24的定點(diǎn)數(shù),則移位次數(shù)要少24,magic number是1.5*2^28。對于其他格式的定點(diǎn)數(shù),以此類推。比起int(float_val*65536)這樣的表達(dá)式,無論是速度還是精度都要優(yōu)勝得多。

另外,不得不再次重申的是,對于在最后的結(jié)果中被移除掉的數(shù)值,F(xiàn)PU會將其四舍五入到偶數(shù)。然而,有時(shí)我們確實(shí)需要像floor和ceil那樣的操作,那該怎么辦呢?很簡單,將原數(shù)加上或減去一個(gè)修正值就可以了,如下所示:
----------------------------------------------------------------------------------------
// 修正值
static double magic_delta=0.499999999999;

// 截取到整數(shù)
inline void Floor64 (int &val, double dval)
{
RoundToInt64(val,dval-delta);
}

// 進(jìn)位到整數(shù)
inline void Ceil64 (int &val, double dval)
{
RoundToInt64(val,dval+delta);
}
----------------------------------------------------------------------------------------
這個(gè)世界上沒有免費(fèi)的午餐。我們獲得了速度,相對應(yīng)地,也必須付出一些代價(jià),那就是可移植性。上述方法全都基于以下幾個(gè)假設(shè):(1)在x86上跑;(2)符合IEEE的浮點(diǎn)數(shù)標(biāo)準(zhǔn);(3)int為32位,float為32位,double為64位。局限性其實(shí)是蠻大的,相比之下,int_val=(int)float_val就要省事多了。當(dāng)然,你也可以使用條件編譯。

最后,讓我們來看兩組實(shí)際的測試數(shù)值。這份報(bào)告來自于Sree Kotay和他的朋友Herf:
----------------------------------------------------------------------------------------
平臺:Pentium IV/1.2

64位浮點(diǎn)數(shù)到32位整數(shù)的轉(zhuǎn)換:

int(f):        2772.65 ms
fistp:         679.269 ms
magic number:  622.519 ms

64位浮點(diǎn)數(shù)到16-16定點(diǎn)數(shù)的轉(zhuǎn)換:

int(f*65536):  2974.57 ms
fistp:         3100.84 ms
magic number:  606.80 ms

floor函數(shù):

ANSI floor:    7719.400 ms
magic number:  687.177 ms
----------------------------------------------------------------------------------------
平臺:Pentium D/3.2

64位浮點(diǎn)數(shù)到32位整數(shù)的轉(zhuǎn)換:

int(f):        1948.470 ms
fistp:         523.792 ms
magic number:  333.033 ms

64位浮點(diǎn)數(shù)到16-16定點(diǎn)數(shù)的轉(zhuǎn)換:

int(f*65536):  2163.56 ms
fistp:         7103.66 ms
magic number:  335.03 ms

floor函數(shù):

ANSI floor:    3771.55 ms
magic number:  380.25 ms
----------------------------------------------------------------------------------------
性能的差距實(shí)在令人驚訝,不是嗎?我想說的是,寫編譯器的家伙絕對不是傻瓜(恐怕比你我都要聰明得多),他們當(dāng)然知道所有這些優(yōu)秀的算法。但為什么編譯器的表現(xiàn)會如此糟糕呢?其中一個(gè)理由是,為了使浮點(diǎn)數(shù)運(yùn)算盡可能精確和迅速,IEEE在算法的選擇上有很多的限制。而另一方面,IEEE的舍入規(guī)則(四舍五入到偶數(shù))盡管從維持浮點(diǎn)數(shù)的連貫性上來看非常棒,但卻不符合ANSI C在浮點(diǎn)數(shù)到整數(shù)的類型轉(zhuǎn)換上的說明(截尾)。于是,編譯器不得不做一大堆的工作來保證行為的正確性(符合標(biāo)準(zhǔn))。這在大部分情況下都不是什么問題——除非你在寫圖形/聲音/多媒體之類的代碼。

剛剛在我的賽揚(yáng)1.1G上實(shí)際測試了一下。編譯器是VC2003,使用PerformenceCounter來計(jì)算時(shí)間,在DEBUG模式下,C標(biāo)準(zhǔn)轉(zhuǎn)換/FISTP/MagicNumber三種方法所耗費(fèi)時(shí)間的比約為5/3/2。但在優(yōu)化全開的RELEASE模式下,標(biāo)準(zhǔn)C類型轉(zhuǎn)換的速度卻是遙遙領(lǐng)先于所有其他的方法!也不知道是我的測試方法有問題,還是該贊VS厲害。
--------------------------------------------------------------------------------------
參考文獻(xiàn)和相關(guān)資源可到鄙人的小店下載:http://greatsorcerer.go2.icpcn.com/info/float2int.html

1,What Every Computer Scientist Should Know About Floating-Point Arithmetic by David Goldberg(PDF):
這篇論文囊括了關(guān)于浮點(diǎn)數(shù)的所有東西,正如其名字所示,任何想要了解浮點(diǎn)數(shù)的人都必讀的文獻(xiàn)。(其中關(guān)于精度的討論實(shí)在令我受益非淺。) 

2,Let's Get to The Floating Point by Chris Hecker(PDF):
早期的關(guān)于浮點(diǎn)數(shù)的文章,寫得非常棒,值得一看。
 
3,IEEE Standard 754 for Binary Floating Point Arithmetic by Prof.W.Kahan(PDF):
關(guān)于IEEE754標(biāo)準(zhǔn)的說明。 

4,IA64 Floating Point Operations and the IEEE Standard for Binary Floating Point Arithmetic(PDF):
關(guān)于IA64的浮點(diǎn)數(shù)實(shí)現(xiàn)。 

5,Know Your FPU: Fixing Floating Fast by Sree Kotay 

posted on 2008-01-31 22:23 小果子 閱讀(7330) 評論(6)  編輯 收藏 引用 所屬分類: 學(xué)習(xí)筆記

FeedBack:
# re: 浮點(diǎn)數(shù)到整數(shù)的轉(zhuǎn)換(轉(zhuǎn))
2011-12-24 20:43 | Mcmahon18Margret
This is perfect that we can receive the <a href="http://goodfinance-blog.com">loan</a> moreover, this opens new chances.   回復(fù)  更多評論
  
# re: 浮點(diǎn)數(shù)到整數(shù)的轉(zhuǎn)換(轉(zhuǎn))
2012-01-12 11:22 | thesis
Which way could you create your superb theme related to this good topic I think over? The dissertation writing service need masters like you to perform the thesis example completing. Hence you have got a great chance to get to the team of masters.   回復(fù)  更多評論
  
# re: 浮點(diǎn)數(shù)到整數(shù)的轉(zhuǎn)換(轉(zhuǎn))
2012-01-12 23:13 | coursework
University students are chatting just about essays completing. But, less of them understand what is writing. Hence, numbers of such guys dismiss their degrees. We suggest to order courseworks to avoid that!   回復(fù)  更多評論
  
# re: 浮點(diǎn)數(shù)到整數(shù)的轉(zhuǎn)換(轉(zhuǎn))
2014-04-01 12:37 | resume formats
This company renders first-rate and professional resume writing service. Therefore, if you don’t have a clue where to buy resume paper, desire to buy resumes from expert resume writers or merely to view CV sample, visit RESUMESLEADER center (resumesleader.com).  回復(fù)  更多評論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            另类av导航| 亚洲午夜女主播在线直播| 亚洲午夜免费视频| 亚洲国产一区二区精品专区| 久久久999精品| 亚洲一区二区毛片| 国产精品视频免费在线观看| 亚洲一区二区精品视频| 亚洲免费观看视频| 欧美日韩综合久久| 亚洲影院污污.| 性欧美暴力猛交另类hd| 国内精品久久久| 久久综合福利| 蜜臀a∨国产成人精品| 夜夜爽av福利精品导航 | 亚洲精品国久久99热| 亚洲国产精品久久久久婷婷884 | 欧美日韩免费区域视频在线观看| 99这里只有精品| 欧美韩日一区二区| 性欧美办公室18xxxxhd| 久久国产精品久久精品国产| 亚洲美女av黄| 亚洲欧美日韩精品在线| 亚洲国产精品久久91精品| 亚洲精品国产拍免费91在线| 国产精品久久久久久久7电影 | 欧美成人激情视频| 欧美日本不卡| 久久动漫亚洲| 欧美成人综合| 久久久噜噜噜久久中文字免| 欧美日韩国产不卡在线看| 久久久久在线观看| 伊人婷婷欧美激情| 亚洲资源av| 99av国产精品欲麻豆| 久久久久久久久久久久久9999| 亚洲乱码国产乱码精品精98午夜| 欧美精品在线一区二区| 日韩亚洲欧美高清| 午夜在线一区| 亚洲国产高清高潮精品美女| 欧美国产三区| 亚洲尤物视频网| 久久午夜国产精品| 99国产精品私拍| 国产精品视频精品| 久久综合综合久久综合| 亚洲精品乱码久久久久久蜜桃麻豆| 亚洲欧美国产另类| 欧美日韩综合另类| 欧美一区二区三区精品电影| 亚洲欧美伊人| 欧美午夜久久久| 亚洲乱码精品一二三四区日韩在线| 怡红院av一区二区三区| 欧美激情综合网| 亚洲激情二区| 最新日韩在线视频| 蜜桃久久精品乱码一区二区| 99国产精品久久久久老师| 亚洲国产精品久久久久婷婷884 | 韩日欧美一区二区三区| 性欧美大战久久久久久久免费观看| 男女激情久久| 午夜视频久久久| 亚洲美女啪啪| 一区在线播放视频| 久久五月天婷婷| 欧美国产日本| 亚洲免费成人av| 国模套图日韩精品一区二区| 欧美日韩不卡视频| 久久伊人亚洲| 性欧美8khd高清极品| 亚洲美女视频在线观看| 老司机一区二区三区| 亚洲韩国精品一区| 国产午夜精品在线| 久久精品卡一| 欧美激情四色| 久久这里有精品视频| 亚洲欧美另类在线观看| 9i看片成人免费高清| 亚洲国产精品久久久久婷婷老年| 国产喷白浆一区二区三区| 久久国产精品毛片| 亚洲欧美色一区| 亚洲视频免费看| 久久免费视频网| 欧美一区91| 亚洲国产一区二区在线| 黄色精品在线看| 国产一区二区三区观看| 免费一级欧美片在线观看| 亚洲精品乱码久久久久久蜜桃91 | 国产亚洲电影| 国产女人aaa级久久久级| 国产精品久久久久久久久久免费| 亚洲视频免费看| 一本色道综合亚洲| 欧美在线日韩| 先锋影音久久久| 欧美中文在线观看| 久久九九久久九九| 久久久久久久综合色一本| 久久久久久精| 久久尤物视频| 欧美黄色一级视频| 欧美激情国产日韩| 最新日韩av| 日韩特黄影片| 亚洲自啪免费| 久久狠狠婷婷| 免费欧美日韩| 欧美日韩成人激情| 欧美午夜精品久久久久免费视| 国产精品h在线观看| 国产麻豆91精品| 欧美精品久久99| 欧美日韩在线看| 国产精品高潮呻吟| 国产一区二区三区久久久久久久久| 国产一区二区主播在线| 亚洲激情一区二区| 制服丝袜激情欧洲亚洲| 最新69国产成人精品视频免费| 日韩性生活视频| 亚洲欧美日韩在线观看a三区 | 亚洲精品久久久久| aa级大片欧美| 欧美专区第一页| 亚洲欧美日韩一区| 久久夜色撩人精品| 欧美色精品天天在线观看视频| 国产欧美 在线欧美| 亚洲国产国产亚洲一二三| 日韩视频中文字幕| 欧美专区第一页| 最新日韩中文字幕| 午夜久久黄色| 欧美成人综合| 国产私拍一区| 一本久久知道综合久久| 久久精品午夜| 久久精品五月| 亚洲欧洲综合| 久久成人久久爱| 欧美视频一区二区三区四区| 黄色日韩网站| 性高湖久久久久久久久| 欧美激情久久久久久| 午夜在线视频观看日韩17c| 欧美精品www| 亚洲第一精品福利| 亚洲黄色小视频| 香蕉久久一区二区不卡无毒影院| 亚洲第一福利社区| 欧美激情亚洲激情| 欧美一区二区三区视频| 欧美午夜精品久久久久久久| 亚洲国产91| 久久久久久国产精品一区| 在线亚洲观看| 欧美精品综合| 亚洲国产婷婷香蕉久久久久久| 久久精品五月| 亚洲午夜久久久久久久久电影网| 欧美电影电视剧在线观看| 激情五月***国产精品| 久久av资源网站| 亚洲视频大全| 欧美色图五月天| 一区二区三区高清视频在线观看| 亚洲视频axxx| 亚洲国产mv| 蜜臀va亚洲va欧美va天堂| 狠狠色狠狠色综合日日五| 午夜精品视频一区| 在线亚洲一区二区| 欧美午夜性色大片在线观看| 一本色道久久综合亚洲精品不卡| 亚洲福利国产| 久久婷婷久久| 91久久精品国产91久久性色| 欧美国产精品劲爆| 一区二区三区日韩欧美| 欧美日韩影院| 亚洲一区二区三区欧美| 国产精品99久久久久久人| 欧美日精品一区视频| 亚洲午夜精品久久久久久浪潮| 亚洲美洲欧洲综合国产一区| 欧美日韩精品免费观看视频| 亚洲夜晚福利在线观看| 一本色道久久加勒比精品| 国产精品久久久亚洲一区| 午夜一区二区三区不卡视频|