欧美成人午夜精品久久久,国产?V天堂一区二区三区,欧美精品va在线观看,亚洲一区二区三区免费在线观看,av无码精品一区二区久久,欧美性爱视频不卡一区三区,欧美乱人伦视频在线观看,国产一级牲交高潮

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運營的一線實戰(zhàn)洞察。

進制轉(zhuǎn)換原理與C語言實現(xiàn):位權(quán)、補碼與任意進制互轉(zhuǎn)

進制轉(zhuǎn)換原理與C語言實現(xiàn):位權(quán)、補碼與任意進制互轉(zhuǎn) 前段時間調(diào)一個串口通信程序設(shè)備手冊里寫著狀態(tài)寄存器返回 0x3F7低 8 位是錯誤碼高 4 位是設(shè)備類型。結(jié)果同事直接把這個十六進制數(shù)當(dāng)十進制打印出來成了 3.977折騰了大半天才定位到問題是進制轉(zhuǎn)換沒做。這種事兒在嵌入式、網(wǎng)絡(luò)協(xié)議、底層開發(fā)里真的太常見了。進制轉(zhuǎn)換看著是大學(xué)一年級的基礎(chǔ)課但真到了實戰(zhàn)里——二進制小數(shù)要怎么精確轉(zhuǎn)十進制負數(shù)轉(zhuǎn)十六進制為什么有時候是 FFFFFFFB八進制和十六進制之間能不能繞開十進制直接換字符串形式的任意進制互轉(zhuǎn)在 C 語言里怎么寫才不容易踩坑——能一次說清楚的人真不多。這篇我把整數(shù)、小數(shù)、正數(shù)、負數(shù)、任意進制相互轉(zhuǎn)換全部過一遍從位權(quán)原理講到手算步驟再給出可編譯運行的 C 語言完整實現(xiàn)。適合剛學(xué)計算機基礎(chǔ)的學(xué)生鞏固原理也適合寫驅(qū)動、做協(xié)議解析、處理數(shù)據(jù)編碼的工程師當(dāng)工具文收藏。1. 進制到底在說什么位權(quán)機制是唯一核心很多人學(xué)進制轉(zhuǎn)換死記8421法則換一個基數(shù)就懵。根源在于沒有理解位權(quán)。所謂位權(quán)就是數(shù)字里每一個位置所代表的實際大小。十進制里我們天天用卻不覺得——123 從右往左依次是個位10^0、十位10^1、百位10^2所以 123 1×10^2 2×10^1 3×10^0。這個10^n就是十進制每一位的位權(quán)。1.1 位權(quán)的排布規(guī)律對任意進制 base從小數(shù)點往左數(shù)整數(shù)部分的第 0 位權(quán)重是 base^0第 1 位是 base^1第 2 位是 base^2依次類推。從小數(shù)點往右數(shù)小數(shù)部分的第 1 位權(quán)重是 base^(-1)第 2 位是 base^(-2)依次類推。這里有幾個新手常犯的錯誤。第一整數(shù)位從 0 開始編號不是從 1 開始。第二小數(shù)位第一位權(quán)重是 base^(-1)也就是 1/base不是 base 分之一再除以 base。第三位權(quán)只取決于位置和進制跟這位數(shù)字本身沒關(guān)系——數(shù)字的值只是位權(quán)的倍數(shù)。拿二進制 1101.01 舉例從最左邊開始1 × 2^3 1 × 2^2 0 × 2^1 1 × 2^0 0 × 2^(-1) 1 × 2^(-2)。你先別急著算結(jié)果把這個展開式記住它就是后面所有轉(zhuǎn)換公式的祖宗。1.2 用多項式視角統(tǒng)一所有進制把任意進制數(shù)字拆開看本質(zhì)上就是一個多項式d_n × base^n d_(n-1) × base^(n-1) ... d_1 × base^1 d_0 × base^0 d_(-1) × base^(-1) ...其中 d_i 是第 i 位的數(shù)字base 是基數(shù)。為什么說這個視角重要因為它把進制轉(zhuǎn)換從一個需要分別記憶多個口訣的問題統(tǒng)一成了一個求多項式值的問題。任意進制轉(zhuǎn)十進制就是直接把這個多項式算出來十進制轉(zhuǎn)任意進制就是把這個多項式按照新的進制重新展開任意進制之間互轉(zhuǎn)本質(zhì)上就是反復(fù)進行多項式求值和多項式重展開兩個動作。理解了這一點你就不會再被二進制轉(zhuǎn)八進制要三位一組八進制轉(zhuǎn)十進制要乘以 8 的冪這類碎片化口訣困住所有操作都能從原理推導(dǎo)出來。我見過很多工作多年的同事手算十進制轉(zhuǎn)二進制飛快但讓他解釋為什么除 2 取余要逆序排列就又說不清了——因為他只背了口訣沒吃透多項式展開。下面我按照最實用的路徑把每一步都拆開講。2. 任意進制轉(zhuǎn)十進制按權(quán)展開的通用公式這一節(jié)處理的問題是給你一個字符串形式的數(shù)比如2A.3F進制是十六進制讓你算出它在十進制下是多少。思路只有一個每一位乘上自己的位權(quán)然后全部加起來。2.1 整數(shù)部分的展開過程整數(shù)部分按權(quán)展開從右往左依次乘 base^0、base^1、base^2……這里用幾個實例演示整個計算步驟。十六進制 0x2A 轉(zhuǎn)十進制2A 2 × 16^1 A × 16^0 2 × 16 10 × 1 32 10 42A 在十六進制里代表 10這個必須記牢。十六進制用 A~F 表示 10~15字母不分大小寫但很多程序里大寫更規(guī)范后文代碼也統(tǒng)一輸出大寫。八進制 0755 轉(zhuǎn)十進制755 7 × 8^2 5 × 8^1 5 × 8^0 7 × 64 5 × 8 5 × 1 448 40 5 493這個例子在 Linux 文件權(quán)限里非常常見chmod 755的權(quán)限數(shù)值就是按八進制語義理解的改成十進制去看反而別扭。二進制 10110011 轉(zhuǎn)十進制從右往左算更不容易出錯位 1 0 1 1 0 0 1 1 權(quán) 2^7 2^6 2^5 2^4 2^3 2^2 2^1 2^0 值 128 0 32 16 0 0 2 1 和 128 32 16 2 1 179實際操作的時候我習(xí)慣從右往左逐位累加1 2 0 0 16 32 0 128 179。這個方向能避免寫錯 2 的冪次。2.2 小數(shù)部分的展開過程小數(shù)部分的關(guān)鍵是位權(quán)是負指數(shù)。二進制小數(shù)點后第 1 位代表 1/2第 2 位代表 1/4第 3 位代表 1/8這個數(shù)列是 1/2、1/4、1/8、1/16……每一項是前一項的一半跟直覺完全吻合。二進制 101.101 轉(zhuǎn)十進制整數(shù)部分1×2^2 0×2^1 1×2^0 4 0 1 5 小數(shù)部分1×2^(-1) 0×2^(-2) 1×2^(-3) 0.5 0 0.125 0.625 結(jié)果 5.625注意二進制小數(shù)能精確表示的值非常有限。0.1、0.2 這樣的十進制小數(shù)在二進制下是無限循環(huán)的所以浮點數(shù)計算會出現(xiàn) 0.1 0.2 ! 0.3 的現(xiàn)象。這一點在第三節(jié)細說。十六進制 3.A 轉(zhuǎn)十進制3.A 3 × 16^0 A × 16^(-1) 3 10/16 3 0.625 3.625這里有個受益終身的對應(yīng)關(guān)系值得記住二進制小數(shù)0.1是十進制0.5十六進制小數(shù)0.8是十進制0.5八進制小數(shù)0.4是十進制0.5。每個進制的小數(shù)點后一位都等于 1/base理解了這條其他對應(yīng)關(guān)系都能秒推。2.3 常用進制對照速查表手算和調(diào)試時經(jīng)常要快速查值下面這個表覆蓋了 0~15 在四種常見進制下的表示建議直接保存在筆記里。十進制二進制八進制十六進制000011112102231133410044510155611066711177810001089100111910101012A11101113B12110014C13110115D14111016E15111117F提示這張表只需要記住二進制 1000 八進制 10但 1000 看起來像十進制一千這個反直觀點就能避免以后調(diào)試權(quán)限位時把 0755 和 755 混為一談。3. 十進制轉(zhuǎn)任意進制整數(shù)除基、小數(shù)乘基的分治流程從十進制轉(zhuǎn)出去整數(shù)部分和小數(shù)部分的算法完全不同必須先分開再合并。整數(shù)部分是除法小數(shù)部分是乘法方向也相反——這是整篇最容易繞暈的地方。3.1 整數(shù)部分除基取余逆序排列算法口訣六個字除基取余逆序。舉個完整例子十進制 42 轉(zhuǎn)二進制42 ÷ 2 21 余 0 ← 最低位 21 ÷ 2 10 余 1 10 ÷ 2 5 余 0 5 ÷ 2 2 余 1 2 ÷ 2 1 余 0 1 ÷ 2 0 余 1 ← 最高位從下往上讀取余數(shù)得到101010。驗證一下1×2^5 0×2^4 1×2^3 0×2^2 1×2^1 0×2^0 32 8 2 42正確。**為什么余數(shù)要逆序**你想第一次除以 2 的余數(shù)是原數(shù)里 2^0 位上的值第二次的余數(shù)是 2^1 位上的值最后一次的余數(shù)是最高位。而我們寫數(shù)字的時候最高位在最左邊所以必須把先算出來的低位放在后面最后算出來的高位放在前面。**如果目標(biāo)是十六進制同樣操作但除數(shù)換成 16**十進制 493 轉(zhuǎn)十六進制——493 ÷ 16 30 余 13 → D 30 ÷ 16 1 余 14 → E 1 ÷ 16 0 余 1 → 1逆序得到0x1ED。這個案例可以反向驗證1×256 14×16 13 256 224 13 493成立。3.2 小數(shù)部分乘基取整順序排列算法口訣也是六個字乘基取整順序。**注意這次是正序不要逆序。**舉例十進制 0.625 轉(zhuǎn)二進制0.625 × 2 1.25 取整數(shù)位 1 ← 第一位 取掉整數(shù)后剩 0.25 0.25 × 2 0.5 取整數(shù)位 0 ← 第二位 0.5 × 2 1.0 取整數(shù)位 1 ← 第三位正序讀取結(jié)果0.101。驗證0.5 0 0.125 0.625完美。**為什么小數(shù)要正序**第一次乘以 2 得到的整數(shù)部分是小數(shù)點后第一位的值權(quán)重 2^(-1)第二次得到的是小數(shù)點后第二位權(quán)重 2^(-2)依次類推。小數(shù)部分的位權(quán)從左到右遞減所以算出來的順序正好就是寫出來的順序不用倒。3.3 浮點精度會造成哪些假象十進制小數(shù)轉(zhuǎn)二進制時不是所有小數(shù)都能有限位數(shù)精確表示。最經(jīng)典的是 0.10.1 × 2 0.2 取 0 0.2 × 2 0.4 取 0 0.4 × 2 0.8 取 0 0.8 × 2 1.6 取 1 0.6 × 2 1.2 取 1 0.2 × 2 0.4 取 0 …… 從這里開始循環(huán)0.1 的二進制展開是無限循環(huán)的0.0001100110011001100...永遠寫不完。計算機里用 double 存儲時只能截取 52 位有效數(shù)字所以浮點數(shù)本質(zhì)上都是近似值。做進制轉(zhuǎn)換工具時小數(shù)部分必須設(shè)置一個最大精度參數(shù)比如轉(zhuǎn)換 20 位就停下來否則會出現(xiàn)死循環(huán)或者因為浮點誤差算出 0.9999999999 這種尷尬值。還有一個實際開發(fā)中的坑當(dāng)小數(shù)乘基后得到 0.999999999999 或 1.0000000001 時取整會得到錯誤的一位數(shù)。嚴謹?shù)霓D(zhuǎn)換程序需要在取整前做一個 epsilon 容差判斷——如果 frac 距離 1 的差距小于 1e-10就把它當(dāng)作 1 處理同時向高位進位。這個細節(jié)我在第六節(jié)的代碼里給出了處理方式。4. 2的冪進制間互轉(zhuǎn)三位一組和四位一組的快捷規(guī)則如果要把二進制轉(zhuǎn)八進制最笨的辦法是先把二進制轉(zhuǎn)十進制再把十進制轉(zhuǎn)八進制。但這個流程對 2 的整數(shù)次冪進制二進制、四進制、八進制、十六進制、三十二進制來說純屬繞路因為它們之間存在天然的分組對應(yīng)關(guān)系。4.1 為什么八進制和十六進制這么特殊八進制的基數(shù)是 8 2^3所以1 位八進制數(shù)精確對應(yīng) 3 位二進制數(shù)。十六進制的基數(shù)是 16 2^4所以1 位十六進制數(shù)精確對應(yīng) 4 位二進制數(shù)。這個對應(yīng)關(guān)系不存在任何進位誤差可以直接查表或分組完成。反過來也成立二進制轉(zhuǎn)八進制從小數(shù)點開始分別向左、向右每 3 位一組不夠位數(shù)用 0 補齊。二進制轉(zhuǎn)十六進制同樣規(guī)則但每 4 位一組。4.2 轉(zhuǎn)換對照表和速算技巧十六進制和二進制的高位對應(yīng)關(guān)系是最常用的把下面這行刻進腦子里0x0 0000 0x4 0100 0x8 1000 0xC 1100 0x1 0001 0x5 0101 0x9 1001 0xD 1101 0x2 0010 0x6 0110 0xA 1010 0xE 1110 0x3 0011 0x7 0111 0xB 1011 0xF 1111做幾個完整示例。二進制 110101110.1011 轉(zhuǎn)八進制整數(shù)部分從右往左每 3 位分組110 101 110分別對應(yīng)6 5 6。小數(shù)部分從左往右每 3 位分組101 100最后一組補兩個 0 湊成 3 位對應(yīng)5 4。所以結(jié)果是656.54八進制。二進制 110101110.1011 轉(zhuǎn)十六進制整數(shù)部分從右往左每 4 位分組0001 1010 1110最前面補三個 0對應(yīng)1 A E。小數(shù)部分1011對應(yīng)B。結(jié)果是0x1AE.B。注意對二進制小數(shù)分組時方向是相反的。整數(shù)部分是從右往左分組小數(shù)部分是從左往右分組。很多人第一次轉(zhuǎn)小數(shù)就不管三七二十一從右往左分結(jié)果全部錯位。4.3 實戰(zhàn)場景顏色值、權(quán)限值、協(xié)議包頭HTML/CSS 顏色值#FF8800本質(zhì)是把紅色 FF、綠色 88、藍色 00 三個十六進制字節(jié)拼接在一起。想在代碼里快速判斷顏色變化先把 FF255、88136、000 這三個十六進制轉(zhuǎn)十進制立刻就知道 RGB 值是多少。Linux 文件權(quán)限chmod 754和chmod 0754在權(quán)限位上其實有微妙區(qū)別但八進制轉(zhuǎn)二進制時一目了然7111讀寫執(zhí)行、5101讀執(zhí)行、4100只讀。網(wǎng)絡(luò)協(xié)議包頭解析以太網(wǎng)協(xié)議類型字段0x0800表示 IPv40x86DD表示 IPv6。抓包工具顯示的十六進制你是先字節(jié)組再轉(zhuǎn)十進制還是直接心算經(jīng)常做協(xié)議解析的人對 0800、0806、86DD 這幾個值必須形成肌肉記憶。5. 負數(shù)參與進制轉(zhuǎn)換補碼機制與符號位處理負數(shù)是最容易讓人翻車的環(huán)節(jié)。核心問題在于在計算機里負號不是一個可以存儲的自然概念數(shù)字的符號必須用編碼規(guī)則表達。于是出現(xiàn)了原碼、反碼、補碼三種表示方式而現(xiàn)代計算機幾乎全部采用補碼。5.1 計算機為什么不用負號假設(shè) 8 位二進制如果按原碼設(shè)計正數(shù) 1 是00000001負數(shù) -1 就是10000001最高位當(dāng)符號位。這樣做的后果是00000000和10000000分別表示 0 和 -0出現(xiàn)了兩個零浪費編碼空間。減法無法直接用加法器實現(xiàn)。1 (-1)用原碼算00000001 10000001 10000010結(jié)果是 -2完全錯誤。補碼方案解決了這兩個問題。負數(shù)的補碼定義是該數(shù)絕對值取反加一。在補碼體系里減法和加法完全統(tǒng)一CPU 只需要一套加法電路這直接決定了計算機硬件可以做得更簡單更快。5.2 從原碼到補碼的標(biāo)準流程和手算實例給定十進制 -5要求 8 位二進制補碼步驟是第一步 寫出絕對值 5 的二進制原碼 0000 0101 第二步 按位取反0變11變0 1111 1010 第三步 加 1 1111 1011所以-5 的 8 位二進制補碼是 11111011。驗證一下把它當(dāng)無符號數(shù)看是 251而 251 - 256 -5說明這個編碼表示的確實是 -5。這個無符號值減 2^n的驗證法在調(diào)試時非常有用后面代碼里我就用這個邏輯做補碼輸出。**十六進制場景int32_t 類型的 -5 在內(nèi)存里是 0xFFFFFFFB。**如果你用%x格式打印一個 int 變量得到的是-5 的 32 位補碼 11111111 11111111 11111111 11111011 0xFFFFFFFB很多初學(xué)者看到-5打印成FFFFFFFB以為是程序 bug實際上這是補碼的直接呈現(xiàn)。5.3 補碼形式和帶符號形式怎么選擇寫進制轉(zhuǎn)換工具時你要回答一個關(guān)鍵問題負數(shù)轉(zhuǎn)進制輸出-101還是輸出補碼11111011面向人類閱讀比如打印日志、教學(xué)演示用帶符號形式先轉(zhuǎn)絕對值再加負號輸出-101、-0x2A。面向機器存儲比如寫文件、協(xié)議封包、寄存器值必須用補碼形式且一定要同時指定位數(shù)寬度。8 位、16 位、32 位、64 位下同一個負數(shù)的補碼完全不同。兩者混淆是生產(chǎn)事故的重災(zāi)區(qū)。我見過一個同事把協(xié)議里的負數(shù)直接按帶符號形式轉(zhuǎn)成-3去解析結(jié)果報文解析整體偏移了 4 個字節(jié)。所以代碼實現(xiàn)里我會同時提供兩種輸出模式由調(diào)用方?jīng)Q定。5.4 補碼的回推驗證手算補碼容易出錯必須學(xué)會回推驗證。已知補碼11111011想知道它是哪個負數(shù)第一步 減 1 1111 1010 第二步 按位取反 0000 0101 5 第三步 加上負號 -5這就完成了補碼到十進制負數(shù)的還原。跟正向流程對稱正向是取反加一反向是減一取反。提示判斷一個補碼是正還是負看最高位。最高位是 0 就是非負數(shù)是 1 就是負數(shù)。這個規(guī)則在后續(xù)寫代碼判斷符號時是核心邏輯。6. C語言實現(xiàn)任意進制互轉(zhuǎn)一份可直接編譯的參考代碼網(wǎng)絡(luò)熱搜里進制轉(zhuǎn)換 C 語言一直是高頻詞說明很多人卡在代碼實現(xiàn)上。這里給出一份完整、可編譯、支持正負整數(shù)和小數(shù)、支持 2~36 進制的參考實現(xiàn)。整體設(shè)計思路是任意進制 A 的數(shù)先轉(zhuǎn)成十進制再轉(zhuǎn)成目標(biāo)進制 B這樣做能保證代碼通用性和正確性。6.1 函數(shù)拆分與設(shè)計思路我把功能拆成四個獨立函數(shù)各司其職函數(shù)名職責(zé)關(guān)鍵點char_to_val/val_to_char數(shù)字字符與 0~35 數(shù)值互轉(zhuǎn)支持大小寫統(tǒng)一大寫輸出any_base_to_dec字符串形式的任意進制數(shù)轉(zhuǎn)十進制處理/-符號自動糾錯非法字符dec_to_any_base十進制整數(shù)轉(zhuǎn)任意進制處理負數(shù)絕對值輸出帶符號形式dec_to_twos_with_bits十進制整數(shù)按指定位寬輸出補碼只對 2 的冪進制生效frac_to_any_base十進制純小數(shù)轉(zhuǎn)任意進制加入 epsilon 容差防無限循環(huán)設(shè)計上有一個取舍要說清楚整數(shù)和小數(shù)分開處理。因為 C 語言里long long只能表示整數(shù)浮點數(shù)需要單獨的字符串拼接邏輯。任何進制的數(shù)一旦混入小數(shù)位就先以字符串形式解析成整數(shù)部分 小數(shù)部分分別轉(zhuǎn)換后拼接。6.2 完整代碼與逐段說明#include stdio.h #include string.h #include ctype.h #include math.h #define MAX_DIGITS 256 #define EPSILON 1e-12 /* 字符轉(zhuǎn)數(shù)值支持大小寫非法字符返回 -1 */ int char_to_val(char c) { if (c 0 c 9) return c - 0; if (c A c Z) return c - A 10; if (c a c z) return c - a 10; return -1; } /* 數(shù)值轉(zhuǎn)字符只輸出大寫 */ char val_to_char(int v) { if (v 10) return 0 v; return A (v - 10); } /* 任意進制字符串轉(zhuǎn)十進制整數(shù)支持正負號 */ long long any_base_to_dec(const char* str, int base) { if (!str || base 2 || base 36) return 0; int i 0, neg 0; if (str[0] -) { neg 1; i 1; } else if (str[0] ) { i 1; } long long res 0; for (; str[i]; i) { int v char_to_val(str[i]); if (v 0 || v base) break; /* 非法字符截斷 */ res res * base v; } return neg ? -res : res; } /* 十進制整數(shù)轉(zhuǎn)任意進制輸出帶符號形式 */ void dec_to_any_base(long long num, int base, char* out) { int neg 0; unsigned long long v; if (num 0) { neg 1; /* 用 (num1) 再取反避免 LLONG_MIN 取絕對值時溢出 */ v (unsigned long long)(-(num 1)) 1ULL; } else { v (unsigned long long)num; } char buf[MAX_DIGITS]; int len 0; if (v 0) { buf[len] 0; } while (v 0) { buf[len] val_to_char(v % base); v / base; } int pos 0; if (neg) out[pos] -; while (len 0) out[pos] buf[--len]; out[pos] \0; } /* 十進制整數(shù)轉(zhuǎn)指定寬度的補碼字符串僅適用于 2、4、8、16、32 進制 */ /* bits 是二進制位寬比如 8/16/32/64 */ void dec_to_twos_with_bits(long long num, int base, int bits, char* out) { int unit; if (base 2) unit 1; else if (base 4) unit 2; else if (base 8) unit 3; else if (base 16) unit 4; else if (base 32) unit 5; else { dec_to_any_base(num, base, out); return; } /* 取低 bits 位。注意這里把有符號數(shù)字按無符號截斷到指定位寬 */ unsigned long long mask (bits 64) ? ~0ULL : ((1ULL bits) - 1ULL); unsigned long long v (unsigned long long)num mask; char buf[MAX_DIGITS]; int len 0; if (v 0) buf[len] 0; while (v 0) { buf[len] val_to_char(v % base); v / base; } int width (bits unit - 1) / unit; /* 輸出的最少字符數(shù) */ int pos 0; for (int i len; i width; i) out[pos] 0; while (len 0) out[pos] buf[--len]; out[pos] \0; } /* 十進制純小數(shù)轉(zhuǎn)任意進制字符串precision 是小數(shù)位數(shù) */ void frac_to_any_base(double frac, int base, int precision, char* out) { int pos 0; out[pos] .; for (int i 0; i precision; i) { frac * base; int digit (int)frac; frac - digit; /* 浮點容差當(dāng) frac 無限接近 1 時按進位處理 */ if (fabs(frac - 1.0) EPSILON) { digit; frac 0.0; } out[pos] val_to_char(digit); if (frac EPSILON i precision - 1) break; /* 已經(jīng)精確到零 */ } out[pos] \0; } int main(void) { /* 測試用例 */ char out[MAX_DIGITS]; printf( 整數(shù)轉(zhuǎn)換測試 \n); printf(十進制 42 轉(zhuǎn)二進制: %s\n, (dec_to_any_base(42, 2, out), out)); printf(十六進制 0x2A 轉(zhuǎn)十進制: %lld\n, any_base_to_dec(2A, 16)); printf(\n 負數(shù)轉(zhuǎn)換測試 \n); printf(-5 的 8 位二進制補碼: %s\n, (dec_to_twos_with_bits(-5, 2, 8, out), out)); printf(-5 的 32 位十六進制補碼: %s\n, (dec_to_twos_with_bits(-5, 16, 32, out), out)); printf(\n 小數(shù)轉(zhuǎn)換測試 \n); printf(十進制 0.625 轉(zhuǎn)二進制: %s\n, (frac_to_any_base(0.625, 2, 8, out), out)); printf(十進制 0.1 轉(zhuǎn)二進制(12位): %s\n, (frac_to_any_base(0.1, 2, 12, out), out)); printf(\n 任意進制互通測試五進制轉(zhuǎn)七進制 \n); long long dec any_base_to_dec(1234, 5); /* 五進制 1234 先轉(zhuǎn)十進制 */ dec_to_any_base(dec, 7, out); /* 再轉(zhuǎn)七進制 */ printf(五進制 1234 七進制 %s\n, out); return 0; }這份代碼編譯運行后輸出應(yīng)該是 整數(shù)轉(zhuǎn)換測試 十進制 42 轉(zhuǎn)二進制: 101010 十六進制 0x2A 轉(zhuǎn)十進制: 42 負數(shù)轉(zhuǎn)換測試 -5 的 8 位二進制補碼: 11111011 -5 的 32 位十六進制補碼: FFFFFFFB 小數(shù)轉(zhuǎn)換測試 十進制 0.625 轉(zhuǎn)二進制: .101 十進制 0.1 轉(zhuǎn)二進制(12位): .000110011001 任意進制互通測試五進制轉(zhuǎn)七進制 五進制 1234 七進制 163幾個實現(xiàn)上的關(guān)鍵點必須解釋**關(guān)于LLONG_MIN取絕對值的溢出問題。**C 語言里long long的表示范圍是非對稱的最小值 -9223372036854775808 取絕對值后是 9223372036854775808超出了有符號范圍。所以代碼里用了-(num 1) 1這個技巧先算num 1不溢出取反再加 1全程不觸發(fā)有符號溢出。關(guān)于補碼字符串的位寬。dec_to_twos_with_bits只對 2 的冪進制有效因為只有這些進制才存在x 位二進制數(shù)恰好對應(yīng) y 位目標(biāo)進制數(shù)的整數(shù)對應(yīng)關(guān)系。對十進制轉(zhuǎn)十進制補碼這種需求本身就不合理所以代碼回退到普通帶符號輸出。**關(guān)于小數(shù)轉(zhuǎn)換的容差。**0.1 在二進制下是無限循環(huán)的浮點數(shù)存的是近似值乘 2 若干次后會得到 0.9999999999999998。如果不做fabs(frac - 1.0) EPSILON的判斷會多輸出一個 0 或少進一位。這個細節(jié)是實際寫代碼時才踩到的坑教學(xué)示例通常不會提。6.3 一個簡化版面試級寫法如果你只是想在面試或筆試題里快速實現(xiàn)一個純整數(shù)版本不需要處理負數(shù)和位寬可以用這段極簡代碼#include stdio.h #include string.h char val_to_char(int v) { return v 10 ? 0 v : A v - 10; } void dec_to_base(unsigned int n, int base, char* out) { int i 0; if (n 0) { out[i] 0; } while (n 0) { out[i] val_to_char(n % base); n / base; } out[i] \0; /* 反轉(zhuǎn)字符串 */ for (int j 0, k i - 1; j k; j, k--) { char t out[j]; out[j] out[k]; out[k] t; } }這個版本只解決十進制整數(shù)轉(zhuǎn)任意進制但結(jié)構(gòu)清晰、無依賴適合作為面試手寫答案的基礎(chǔ)。7. 實操過程中最常見的錯誤與排查經(jīng)驗最后把我這些年幫人排查進制轉(zhuǎn)換問題時遇到的高頻錯誤集中列一下。這些坑看起來小卻能讓人排查一整天。7.1 字母數(shù)字混淆與大小寫問題**十六進制里1數(shù)字一和I字母 i、0數(shù)字零和O字母 o在等寬字體下極易混淆。**之前我調(diào)試一個序列號解析模塊十六進制字符串里出現(xiàn)了字母l解析函數(shù)用的char_to_val不支持小寫字母就返回 -1整個字符串被截斷數(shù)據(jù)直接錯位。規(guī)避方法很簡單解析前統(tǒng)一toupper解析函數(shù)里拒絕低于 0 或大于等于 base 的非法字符并且不要靜默截斷要報錯。生產(chǎn)代碼里我一般會返回錯誤碼而不是默默返回 0不然非法輸入會被當(dāng)成合法的 0 處理問題更難發(fā)現(xiàn)。7.2 小數(shù)轉(zhuǎn)換的浮點誤差0.1 的二進制表示無限循環(huán)double 類型根本無法精確存儲。如果做高精度進制轉(zhuǎn)換比如把0.1轉(zhuǎn)成二進制字符串去顯示你會發(fā)現(xiàn)無論換多少精度去乘最后幾位總是詭異的 99999 或 00001。解決方法有兩個方向一是像第六節(jié)代碼那樣設(shè)置 epsilon 容差二是改用十進制字符串做高精度運算把小數(shù)按位拆成整數(shù)運算完全不經(jīng)過浮點數(shù)。第二種方法的代碼會復(fù)雜很多但精度是確定性的。如果你要做一個進制轉(zhuǎn)換在線工具建議用第二種思路把用戶輸入當(dāng)作字符串處理用大數(shù)運算完成轉(zhuǎn)換才能保證 0.1 轉(zhuǎn)二進制能得到正確的前 N 位。7.3 負數(shù)取絕對值溢出的隱蔽 bug很多初學(xué) C 語言的人寫負數(shù)轉(zhuǎn)正數(shù)時會直接寫-num或abs(num)。但int和long long的最小值無法安全取絕對值這在上一節(jié)代碼注釋里已經(jīng)提到。這個 bug 最陰險的地方在于只有恰好遇到INT_MIN或LLONG_MIN時才會觸發(fā)平時測試全是正數(shù)根本發(fā)現(xiàn)不了。另一個相關(guān)陷阱是符號位擴展。把一個int8_t類型的 -1 賦給long long高 56 位會全部補 1。如果不小心做了位運算再取低 8 位結(jié)果看似沒問題但如果你直接轉(zhuǎn)十六進制輸出會得到FFFFFFFFFFFFFFFF而不是FF。所以輸出負數(shù)的十六進制時一定要明確指定位寬并手動掩碼這也是代碼里dec_to_twos_with_bits存在的意義。7.4 分組方向錯誤整數(shù)右起、小數(shù)左起二進制轉(zhuǎn)八進制或十六進制時整數(shù)部分要從小數(shù)點往左從右到左每 3 位或 4 位分組小數(shù)部分要從小數(shù)點往右從左到右分組。這兩者方向相反。我見過不止一次整數(shù)分組對了、小數(shù)分組卻按從右往左分導(dǎo)致結(jié)果差一位。記憶方法很簡單分組始終從緊貼小數(shù)點的位置開始往外走。整數(shù)是從小數(shù)點往左走碰到最左邊不夠就補 0小數(shù)是從小數(shù)點往右走碰到最右邊不夠也補 0。7.5 把 printf 的%d和%x混用導(dǎo)致誤讀printf(%x, -5)在大部分平臺上打印fffffffb很多人會驚訝負數(shù)怎么變成這么大的數(shù)。原因就是%x把有符號的-5重新解釋成了無符號整數(shù)。在調(diào)試的時候我建議明確分開想看到內(nèi)存里的真實字節(jié)就用%x配合unsigned想看數(shù)值大小就用%d。兩者要表達的東西不同混著用只會讓日志更難讀懂。另外在嵌入式開發(fā)里經(jīng)常需要從設(shè)備寄存器讀回一個值手冊寫的是補碼形式存儲。如果你直接printf(%d, reg_val)得到的小數(shù)值正好是負數(shù)的補碼語義如果寄存器是無符號類型你需要手動判斷最高位再轉(zhuǎn)成負數(shù)。這里沒有銀彈只有搞清楚你面對的數(shù)據(jù)到底是有符號還是無符號??偟膩碚f進制轉(zhuǎn)換這個主題看起來基礎(chǔ)但真要保證正確性要處理位寬、符號、浮點精度、字符串解析這么多細節(jié)。我自己最深刻的體會是任何時候都不要在代碼里硬編碼這個進制只有 2、8、10、16的假設(shè)把轉(zhuǎn)換邏輯參數(shù)化到任意 2~36 進制配合清晰的函數(shù)邊界能省下后面大量在協(xié)議解析、數(shù)據(jù)編碼這類場景里的返工時間。以后要是碰到需要轉(zhuǎn)換超大數(shù)超過 64 位的十進制值的需求可以在現(xiàn)在的代碼基礎(chǔ)上把long long換成一串十進制字符做大數(shù)除法那是另一個話題了但今天梳理的這些核心思想和調(diào)試經(jīng)驗在那套實現(xiàn)里也完全適用。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
高清无码入口| 熟女人妻一区二区三区免费看| av在线免费网站 | 香蕉五月婷婷| 无码人妻AV久久久一区二区三区| 五月天婷婷网站888| 久久久人妻不卡| 激情综合色婷婷啪啪五月天| 欧美激情综合色综合啪啪五月| 婷婷五月天另类网站| 日本美女上人| 91色涩| 天天色播| 能直接看的av网站| 久久五月视频| 丁香激情网| 精品久久久久久久久久久久人妻| 人人舔人人色人人高潮| 99热永久在线观看| 人人干人人干骚美女| 久久伊人婷| 天天射影院| 丁香色婷婷五月天| 天天做天天爱天天要| 久草婷婷| 99色激| 丁香婷婷91在线观看视频| 天天射影院| 91丨九色丨熟女丰满| 综合久久五月| 激情五月www| 五月婷婷色播视频| 亚洲婷婷五月天在线激情综合网| 99热最新精品| WWW.五月天9999| 伊人五月综合网| 婷婷激情久久| 久久99免费视屏| 苗黎美女四级成人版一级二级毛片| 色欲婷婷五月天| 亚洲第一精品网站| 五月色综合| 欧美α√| xxxx久| 色五月在线观看| 678五月丁香亚洲综合| 久热视频A.| 67194成I人在线观看线路1| 综合久久8| 国产精品久久久久久喷浆| 五月天成人在线视频网站| 久久9久| 午夜婷婷久久| 97久久久| 五月天综合在线网| 九九热99精品| 97碰碰视频在线观看| www.99热这里精品| 亚洲精品99| 热久国产| 久久婷婷五月草视频在线播放| 激情五月天黄色小说| www.日本久久videos| 91热爆在线| 91chinese在线| 亚洲啪啪视频| 色五月天网| 五月天婷婷深深爱| 色婷婷综合影院| 亚洲性爱电影| 内射人妻视频国内| 色色婷婷婷丁香五月天| 色综合网上班开心婷婷久久| 色综合久久久久久久久五月| 中文字幕黄色片| 91精品久久久久久77777| 99综合免费视频| 五月婷婷啪啪| 久久精彩视频99| 天堂网色色| 国产av基地| 五月天婷婷一起草| 日韩AAAAAAAAAAA片| 爱久综合| 久久激情婷婷| 久久五月丁香综合17C| 丁香婷婷色| 日本女人久久| 99青青草99| 久久日韩婷婷五月| 玖操97| 五月丁香六月激情欧美综合| 丁香激情网| 婷婷丁香成人色综合| 超级97碰碰| 国产在线黄色| 婷婷五月激情视频在线| 国产精产国品一二三在观看| 99热久草| 亚洲黄网在线| 超碰在线91| 97色伦另类图片小说视频 | 色五月综合网| 99日韩| 色约约视频一区二区三区四区五区| 9有码中文| 天天做天天爱天天日| 婷婷播播五月天| 拳交大逼| 91九色在线| 九九aV| 丁香五月激情啪| 丁香五月天啪啪| 激情6月| 在线成人视频免费| www,婷婷五月天777me,com| 婷婷娱乐丁香综合网| 深爱激情丁香| 蜜桃五月天| 丁香五月www| 亚洲激情视频在线观看| 婷婷va| 亚洲人妻AV| 久久婷五月天| 大香婷婷| 伊人婷婷五月天av| 五月丁香综合啪啪| xxxx久| 99热大片| 五月丁香在线| 久久精品婷婷| 欧美性色视频| 丁香五月大香蕉在线99| 丁香五月婷婷啪啪| 丁香五月av| 伊人激情| 婷婷导航| 五月激情婷婷综合| 九色porny在线观看激情四射| 99久久婷婷国产综合| 婷婷六月色情| 色婷婷综合网站| 91丨人妻丨国产丨丝袜| 激情五月天色婷婷| 色五月激情五月| 久久久久久久久久久44| 手机免费福利视频| 五月婷婷视频| 色婷婷色久综| 欧美精品XXXXBBBB| www.夜夜夜| 亚洲人成色A777777在线观看| 欧美日韩中文国产一区发布| 婷婷丁香五月av| 国产欧美va| 亚洲精品又粗又大又爽A片| 婷婷中文无码| 最新色色五月天| 无码AV大香线蕉伊人| 包操45分钟网站| 操日视频| 六月婷婷av| 草逼大片| AV中文字幕夜夜操b天天摸bb | 五月丁香在线| 伦99热| 色久五月天| 99ER热精品视频| 婷婷五月AV| 五月天婷婷7米| 任你躁XXXXX麻豆精品| 思恩热国产视频右线观看| 丁香五月六月综合激情| 国产小网站| 久久只有18视频| 日韩人妻白浆视频系列| 天天爽天天摸| 激情国产五月| 亚洲色色香蕉| 色婷婷五月综合在线| 99精品综合| 超碰A V在线| 这里只有精品在线看| 99久久人妻精品无码二区| 欧美激情丁香五月| 丁香五月天啪啪| 久久五月综合| 色婷婷久久| 五月天婷婷激情网| 99在线精品免费视频| 99精品视频免费在线播放| 97人人看| 国产成人+综合亚洲+天堂| 91天天操天天干天天射| 丁香色六月| 色色婷婷五月天| 九色91视频| 久久五月天视频| 69久久99精品久久久久| 色婷婷五月综合| 九九香蕉网| 天天操天天操天天操天天操天天操天天操天天操天天操天天操 | 久久婷婷七月丁香| 中文网av| 青青草原伊人网| 色色综合网络| 激情五月综合网最新| 五月丁香无码| 欧美综合激情五月丁香| 婷婷在线日韩综合| 色五月激情综合| 五月色婷婷影院| 五月婷婷色色| 激情的五月| 97搞在线| 碰碰女| 日韩中文欧美| av操B网站| 狠狠插狠狠插| 狠狠干天天内射| 97在线观看| 色久激情在线| 婷婷色色网| 国产在线aaa片一区二区99| 青青福利网| 丁香久久激情俄| 99热这里只有精品1025| www.日韩艹| 中文字幕人妻AV| 久操97| www.激情五月天。com| 人人摸人人干| 婷婷五月天丁香社区| 丁香五月电影| 性爱五月婷| 综合色色婷婷| 99免费视频网| 五月丁香婷婷无码中文| 一婬一伦一区二区三区| 婷婷五月综合在线| 五月丁香婷婷网在线在线| 五月丁香久久网| 成人国产网| 欧美六月| 五月天婷婷无码视频| 爆乳熟妇一区二区三区爆乳照片| 超碰操日| 色噜噜狠狠色综合日日| 狠狠爱激情网| 婷婷丁香在线播放| 思思热久久阴99| WWW.HENHENL.| 色婷婷电影网| 亚洲成人在线免费| 韩国激情五月天综合网| 六月丁香五月激情网| 色五月大| 99视频日韩| 99精品视频免费观看| 九九99一区| www久久久| 又大又粗九一在线| 中文字幕日产A片在线看| 亚洲综合激情五月久久| 五月天婷婷成人资源站| 九九家庭影院| 综合另类视频| 色一情一乱一乱一区9| 无码AV免费精品一区二区三区| 夜夜爱网站| 99热视| 91九色国产熟女| 国产成人精品一区二三区熟女在线 | 99色视频在线| 狠狠色综合久久| 日韩精品一品二区三区的使用体验| 超pen个人视频97| 色欧美影院| 婷婷五月成人系列| 可以直接看的AV网站| 五月丁香美女视频| 中文字幕av在线| 99re视频在线精品| 雪千夏麻豆| 91啪啪| 久久曰曰| 丁香六月情| www.99成人视频| 夜夜夜叫天天天做| 天天综合色综合| 99国产小视频2013| 99成人在线观看| 99re思思久久| 五月激情六月婷婷| 天天色宗合| 婷婷五月综合啪| 婷婷五月天日逼| 丁香六月婷婷久久综合| 五月天无码| 欧美色图天堂网色| 99操99| 99色综合网| 五月丁香婷草| 久热9| AV在线观看网站| 色五月激情综合| 一起肏在线视频| 丁香六月欧美| 久久久久久99精品无码| 激情综合九月| 色婷婷影视| 五月丁香啪啪啪| 99热99在线| 超碰免费成人| 欧洲亚洲免费视频区| 五月婷六月综合在线观看| 99热91| 亚洲小视频免费播放| 久久99精品九九久久久婷婷| 五月激情四射婷婷丁香| 久久五月天激情视频| 五月婷婷久草在线视频综合| nvrentiantang av| 久久99久久久久久| 99热这里都是精品| 超碰自拍天堂| 激情婷婷五月| 五月婷婷激情色情网| 久色五月婷婷综合| 婷婷在线激情| 超碰不卡在线| 大地9中文在线观看免费高清| 欧美激情综合色综合啪啪五月| 五月天伊人| 99久久66综合| 色婷婷影| 97丁香花五月天激情小说| 99热在线里有精品| 天天插综合| 色无码| 五月丁香啪啪啪综合网| 人人干av| 91九色欧美| 色色操| 五月天激情在线视频| 在线中文字幕免费视频| 4438国产免费看| 久久丁香五月婷婷| 久久婷婷五月综合啪| 天天操比比| 色99在线观看| 亚洲A片成人无码久久精品青桔| 人妻中文字幕精品| 亚洲国产精品五月天| 婷婷亚洲丁香五月| 久久婷婷网| 99热18| 久久久色情| 大香蕉五月天婷婷| 五月天六月婷| 激情五月婷婷综合| 碰碰碰97国产| 久er7久热| 五月天激情AV| 大香蕉婷婷| 五月色激情综合网| 激情精品久久| 九月婷婷激情| 久久99大| 99re这里只有精品国产99| 99热这里只有精品18| 五月天婷婷综合| 特黄三级又爽又粗又大| 有码人妻久久| 超碰91人人操| 色吧网综合| 99热这里只有精品268| 在线可以看的av网址| 婷婷视频网| 大香蕉久久视频久久视频| 丁香五月另类色婷婷麻豆| 日韩黄黄| 丁香色婷婷| 日91高清无玛| 17.c黄色| 亚洲乱码日产精品BD| 影音先锋91| 综合图区激情| 欧美性猛交XXXX乱大交极品| 玖玖视频福利| 成人网址在线观看| 超碰在线国产| 狼人狠狠操| 婷婷不卡基地| 人妻 性久久久久久| 99福利导航| 综合五月激情| 五月丁了香蕉综合| 久久婷婷综合五月天| 日韩AV中文字幕在线| 亚洲婷婷开心五月| www.夜夜| 婷婷成人综合| 色情五月综合婷婷| 天堂久久精品| 97人人干| 国产亚洲在线观看| 岛国AV网| 妇激情基地| 激情九九六月激情免费视频| 性爱七区| 婷婷性爱五月天| 成人五月丁香花| 99re26视频| 激情开心五月天| 99re66热这里只有精品| 久久久性爱视频| 五月丁香啪啪综合网| 成人va在线播放| 天堂网操| 网站免费一站二站| 99WWW免费视频| 性生活久久人妻| ..真实国产乱子伦对白在线_欧 | 免费看欧美成人A片无码| 台湾综合丁香五月蜜桃| 欧美久热| 五月婷婷丁香大陆免费| 影音先锋高清无码资源网| 国产成人VA| 天天干天天干天天| 婷婷色丁香五月| 亚洲V国产V欧美V久久久久久| 日韩人妻无码一区二区| 97五月婷| www天天色天天射| 日美三级| 99婷婷国产最新视频| 啪啪黄页网| 色色激情五月| 就是色婷婷五月亚洲色| 天天干,夜夜爽| 天天爱天天做天天舔| 日日夜夜干| ji'qing'luan'ren'lun| 丁香激情综合| 婷婷爱五月| 色哟哟精品| 人妻人人操| 久久加勒比| 青青草五月天| 五月丁香六月婷婷婷婷| 日韩黄色电影| 开心激情站| a69在线视频| 丁香五月天成人| 精品久久66| 免费观看2018www黄色操逼网站| 麻豆五月丁香婷婷| 9精品在线| 久久99热这里只频精品6学生| 日本色婷婷久久99精品91| 激情内射人妻1区2区3区| 这里只有精品在线看| 激情五月天第四色| 狠狠干夜夜干| 婷婷五月天亚洲丁香| 日本激情综合| 99视频这里有精品| 无月播播激情在线观看视频| 97色婷婷五月天| 久久久com| 欧美成人精品一区二区| 亚洲五月婷| 成人无码精品1区2区3区免费看| 夜夜操激情| 操97| 狠狠爱婷婷五月天| 夜夜操天天干| 天天色,天天日,天天做| 婷婷五月激情综合| 日韩乱轮AV| 日本美女五月天| 日本色噜| 亚洲综合1024| 五月天婷婷偷拍| 最新av在线观看| 激情五月网站| www999日韩精品| 久久久国产精品黄毛片| 五月天色色网站| av在线超清中文| 日韩一级网站| 婷婷综合婷婷| 久热免费| 欧美日韩成人高清在线| 色99综合视频| 久久久妻人人人| 99色在线免费观看视频| 婷婷欠久少妇| 99ri在线视频| 任你爽精品免费视频6| 丁香五月天激情小说| 欧美日本国产欧美日本韩国99| 人妻丰满精品一区二区A片| 91丨九色丨熟女|老版| 日韩精品色| 日韩色色小视频| 99日在线观看视频| 色综合色香蕉网| 538在线精品| 99免费| 99er在线观看| 噜一噜免费视频| 婷色综合| 肏日网在线看| 免看黄大片AA | 色五月大香蕉| 激情六月婷婷| 婷婷在线视频| 国产色色视频| 婷婷五月天狠狠搞干| 丁香六月天色婷婷| 色色永久| 人妻久久久久久久久妻久久久久久久久| 日韩性爱无码| 国产黄色大片| 九月丁香婷婷网| 国产XXXX搡XXXXX搡麻豆| 色三级色三级| 影视av久久久噜噜噜噜噜三级| 五月丁香六月婷婷综合网缴情| 婷婷五月天xxx| 精品五月视频婷婷在线观看| 精品久热| 婷婷五月天成人在线视频| 黄色五月婷婷| 思思99热热热99| 超碰人人在线| 九九精品网站| 婷婷五月在线综合| 日本丁香五月婷婷| 婷婷5月天激情综合| 九玖视频这里只有精品| 成人婷99最新| 婷婷六月丁香在线| 色婷婷91激情小说| 第二色AⅤ| 婷婷丁香77777| 99热思思久| 色婷婷丁香五月| 99ri视频| 开心五月综合激情综合五月| 天天色综合综合| 爱婷婷久久视频| 久久99这里只有精品视频| 天天干天天日日| 99在线看片| 5月丁香六月情| 激情五月丁香激情综合网 | 国产综合色婷婷精品久久| 五月丁香六月激情狠狠| 日韩一66精品| 狠色狠色综合久久| 99男人的天堂| www.minyis.com【JT】实力收量可预付QQ2101460746 | 五月天激情啪啪| 91激情五月开心| 综合久久影院| 天天爽天天日| 日韩性爱AV| 69精品无码一区二区三区| 超碰色女| 色999亚洲人成色| Av性爱网站| 九九热在线视频,| 五月婷婷丁香狠狠撸久久| 丁香五月激情在线| 99这里只有精品视频| 91久久久久久| 欧美日本不卡黄色片| 艹天天射| 无码se| 天天噪夜夜爽| 激情五月丁香五月| 天天日夜夜爽| 日韩天堂久久| 色婷婷久久| 激情五月网站| 激情五月天开心| 综合久久99| 色99视频| 久久久久久久久久91| 狠狠做五月| 天天碰天天插天天操| 色综合激情| 国产免费一区二区三州老师F1F1| 婷婷色婷婷| 亚洲愉拍99热成人精品| www.久久爱.com| se色99| www激情婷婷com| 五月天婷婷色色| 日韩限制级大尺度黑料泄密大尺度视频一区二区在线观看 | 九九人人看| 深爱五月综合网| 一级操逼内射在线视频| 久草热8精品视频在线观看| 1024在线观看免费视频| 丁香色六月| 久久久五月四色| 大香蕉精品视频| 亚洲AV成人一区二区在线观看| 久久久噜噜噜www成人| 欧美va亚洲va| 激情综合五月婷婷| 97人妻超级碰碰碰碰碰| 激情六月丁香| 久久丁香五月婷| 婷婷成人五月天| 日B日潘金莲BB| 伊人五月天日日夜夜久久久天天| 亚洲成人婷婷| 校花娇喘呻吟校长陈若雪视频| 99WWW免费视频| 天天日夜夜操五月| 这里只有精品1| 丁香六月婷婷久久高清| 思思热久久爱| 国产精品久久久久久久久久久久| 伊人激情综合网| 天天射色五月天| 婷婷五月色| 激情综合网激情五月天| 五月丁香龟婷婷| 色婷婷99| 97成人丁香婷婷| 中文字幕 中文字幕明步| 成人做爰A片免费看视频 | www.日韩国产| 丁香五月手机视频| 伍月婷丁香花全集| 婷婷综合网| 婷婷五月亚洲综合| 99热天堂| 婷婷五月丁香色播| 丁香激情综合| 亚洲九九99精品视频在线播放| 五月激情婷婷图片基地| 日本色五月| 综激情网| 色欧美影院| 冬月かえでAV无码播放| 丁香五月婷婷色| 一本大道熟女人妻中文字幕在线| 99re久热只有精品6在线直播| 91精品丝袜久久久久久| 大香蕉网站,大香蕉综合| 精品人妻一区| 激情丁香五月AV| 亚洲成人在线五月天| 婷婷久久综合| 深爱激情四射| 色婷婷成人做爰A片免费看网站 | 丁香婷婷人妻综合网| 天天干天天插| 婷婷五六日| 午夜69成人做爰视频| 深爱五月激情综合| 色区久久| 五月天免费色| 国产AV一区二区三区最新精品| 婷婷综合色| 91蜜桃婷婷狠狠久久综合9色| 亚韩在线视频| 99精品热| 婷婷九月激情| 男人操女人高潮91视频| 色情五月天婷婷| 五月丁香婷婷色播无码| 五月婷婷天天| 2017狠狠干| 九九热99视频| 丁香丁婷五月激情| 亚洲精品V天堂中文字幕| 五月丁香亭亭天天舔| 久草九一| 99色色| 超碰免费人妻| 亚洲色综合| 五月婷婷,六月激情| 思思热在线| 99热这里只有精品在线播放| 日本三级片片| 国产成人av在线播放| 久久黄A片| 熟女人妻一区二区三区免费看| 九九热区一区二区三区| 婷婷色在线播放| 丁香五月久久| 夜夜骑日日夜夜| 婷婷五月综合色小姐小说| 精品乱码久久久久| www.色综合| AⅤ网站在线看| 天天日天天干天天天| 五月婷婷|欧美| 少妇综合网| 九九热这里只有国产精品| 亚洲天堂九九九| 九九九九这里只有精品| 五月婷婷深爱六月| 五月丁香综合色婷婷| 婷婷五月综合网| 激情五月天婷婷免费观看| 欧美婷婷色| a久久| 色情·com| 在线色婷婷| 深爱激情五月婷婷| 伊人9999| 亚洲成人影视在线观看| 色色婷婷综合| 久久婷婷网| 99久久丝| 五月婷婷婷综合网| 内射干少妇亚洲69XXX| 欧美五月婷婷| 99热欧| se99热久久一本| 丁香五月五月婷婷欧美大香蕉| 色婷婷六月| 思思热久在线观看视频| 百度4399有码精品V在线观看| 久热91精品| 能看的av片| 五月丁香久久呀| 日日杆天天| 激情婷婷内射| av无码电影| 国产亚洲精品久久久久苍井松| 丁香激情五月| 婷婷激情欧美| 激情综合五月婷| 任我肏视频精品| www.夜夜| 超碰成人电影| 天天综合中文| 影音先锋激情网| 亚洲综合婷婷五月| 狠狠色婷婷综合开心影视| 狠狠操狠狠插| 九九色图| 久久久久久久人妻| 六月丁香激情综合| 亚洲激情淫网| 91激情五月开心| 五月停视频天堂| 大香蕉人妻| 123草逼网| 伊人久久五月天综合| 久操大香蕉| 激情四射婷婷| 99热超碰天堂网| 任你弄在线视频免费| 天天做天天爱天天爽| 天天搡日日搡aaaaⅩ| 婷婷刺激综合| 亚洲日日日| 激情开心五月亚洲| 激情婷婷人妻| 99热这里只有99| 五月色情婷婷| 激情文学久久| 日韩av在线电影| 99久久精品亚洲综合| 久久曰9| 精品热青草| 性欧美大战久久久久久久83| 99爱精品| 大香蕉婷婷| 久久九九热视频| 婷婷激情六月| site:picc-up.com| 99re这里只有精品99| 26UUU欧美激情一区二区| 大香蕉在线观看9| 亚洲AV日韩在线观看| 色爆五月| 影音先锋五月婷婷| 婷婷丁香五月综合网| 丁香五月综合狠狠| 人五月天婷婷喷水| 曰韩五月丁香色婷婷无码| 97在线观视频免费观看| 成 人片 黄 色 大 片| 超PEN精品在线| 婷婷D区| 牛牛澡牛牛爽| 91在线97视频| 丁香花五月天社区| 五月丁香激情综合啪啪| 久久3p| 天天射美女| 亚洲欧美成人在线| 蜜桃婷婷狠狠久久综合| 色综合久久99色| 亚洲AV综合在线观看 | 久久这里只精品| 婷婷五月丁香色综合| 激情婷婷久久| 色色色成人网| 九九伊人网| 国产99久久久国产精品免费看 | 丁香六月色婷婷| 26uuu另类| 婷婷五月丁香色综合| 91婷色| 亚州色色色| 九九久久综合| 国产乱人偷精品人妻A片| 色婷婷丁香花五月天| 色99xx| 激情五月综合久久| 精品人人操| 丁香五月激情六月综合| 在线可以看的av网址| 久久99热免费最新版| www.99久久久| 九九热在线视频| 丁香六月欧美| 国产成人综合在线| 五月天婷五月天综合网在线观| 天天操夜夜夜拍拍拍| 五月天色五月天| 色婷婷亚洲婷婷在线观看| 久久色情| 国产做爰视频免费播放| www:99热视频| 888精品福利地址| 久久这里有精品99| 婷婷五月色惰| www久| 超碰成人在线免费观看| 色色色色热热| 深爱1激情网| AV在线免费网站| 少妇高潮呻吟A片免费看软件 | 色六月 婷婷| www.99精品视频| 丁香激惜男女| 亚洲人成网站999久久久综合| 看婷婷五月天网| SS丁香五月婷婷| 色色狼人综合| 三十熟女| www.色婷婷.com| 米奇影视资源婷婷狠狠色激情欧美五月丁香| www.天天日| 五月色综合| 色色五月激情| 国产超碰在线| 欧美成人日韩| 电影91久久久| 91色五月| 人人爽欧美婷婷久久久五月丁香 | 五月天激情国产综合婷婷婷| 婷婷色色欧美| 国产又黄又爽又激情不遮挡视频在线观看| 天天色伊人| 天天色色天天| 日日噜噜久久婷婷五月天| WWW·天天操·视频?| 狠狠干在线| 99re欧美精品| 99热在线观看免费中文| 五月丁香婷婷综合视频| 精品一二三区久久AAA片| 在线播放成人| 人妻操在线看| 天天色视频| 久久久27操| 激情婷婷五月天在线观看| 综合久| 91视频精品99| 洗浴中心操B视频| 欧美激情综合| 激情五月天在线观看婷婷| 色五月五月婷婷| 六月丁花香啪啪激情欧美| 五月天激情黄色小说在线观看| 免费播放片大片| 日本三级日本黄色| 婷婷五月丁香狠狠| 91chinese在线| 婷婷五月天AV在| 国产玖玖资源| 日韩成人不卡| 天天日夜夜高潮| 最新久久网址| 玖玖爱综合网| 婷婷网五月天| 1024AV视频| 大狠狠在线| 强辱丰满人妻HD中文字幕| 婷婷97| 丁香五月在线自慰| 97人妻碰碰碰久久| 成人丁香五月天Av| 丁香97综合| 日日狠夜夜狠| 天天揷综合网| 开心激情久久久久久久| 欧美成人AAA片一区国产精品| 亚洲综合字幕色色| 超碰九色| 国产婷婷综合在线免费视频| 国产在这里只有精品| 狠狠爱婷婷五月天| 婷婷六月久久| 狠狠操狠狠做| 婷婷中文字幕欧美| 色小说五月婷婷| 香蕉AV777XXX色综合一区| 无码人妻一区二区三区四区| 涩涩五月天| 成人片久久网站| 99热精品在线| 99热在线爱| 天天爱天天操| 丁香六月天婷婷在线| 噜噜在线| 丁香六月婷婷高清| 99视频| 婷婷五月激情在线| 婷婷天堂伊人| 丁香婷婷性久久| 欧美啪啪9| 成人 在线 日韩| 91色婷婷综合久久中文字幕二区| 99精品网| 激情五月天无码| 男人操女人高潮91视频| 久久机只有这里精品| 九热av| 99热这里只有精品中文字幕| 丁香密臀AV激情网| 丁香五月天视频| 成人AV在线电影| 亚洲精品99| 丁香桃色综合网| 午夜不卡久久精品无码免费| 青青草护士中出内射-欧美电影在线天堂新版| 亚洲乱码精品久久久久..| 五月丁香六月婷婷不卡免费无码| 五月天大香蕉婷| 五月丁香六月婷婷亚洲| 久久激情婷婷| 中文字幕,综合,91| 91超级碰碰碰| 国产成人精品一区二三区熟女在线| 亚洲综合婷婷五月天| 1769在线观看欧美国产| 91要啪| 丁香婷五月天| av首页在线| 另类 在线| 狼人狠狠操| 欧美大片免费观看| 激情五月丁香五月| 丁香五月婷婷色情综合| 熟女少妇内射日韩亚洲| 婷婷金品综合视频| 综合啪啪| 国产乱人偷精品人妻A片| 月婷婷婷婷五月| 7月婷婷六月丁香| 天天草女人| 丁香六月色婷婷| 婷婷丁香69精华| 成人丁香婷婷| 99re热在线观看| 狠狠干在线视频| 伊人久久综合| 久久曰曰| 婷婷五月丁香五月综合网| 欧美久草在线日本一级特黄大片做受9在线观看韩国电影《两个女人》未删减-毛片 | 精品人妻伦九区久久AAA片| 婷婷丁香色无五月| 玖玖综合色| 色啪网| 六月综合在线| 91丨九色丨东北熟女| 免费观看日韩成人av| 久久婷婷视频| 国产色五月| 超碰在线人人| 精品无码片| 99热这里只有精品8| 99热日韩| 99re热在线视频| 免费视频1区| 久热超碰| 欧美日韩一区二区三区四区| 干婷婷五月天| 久久精品婷婷五月丁香| 69精品人人人人人人人人人| 色婷婷综合亚洲| 爱婷婷久久视频| 9久热| 青青草网武则天| 三级片AAA久久久AAA久久久AAA| 婷婷综合成人| 色婷婷色情| 色婷五月天| 丁香社92视频| 久草热久草在线视频| 久久色五月| 婷婷五月天高清无码| 七七九九色色| 亚洲在线综合| 五月狠狠| 蒲京久久无码视频| 我爱大香蕉| 97九色视频| 夜夜爱网站| 婷婷婷五月天最新综合你懂的| 日韩999| www.久久爱.com| 久久五月天 91| 97在线观视频免费观看| 久久人妻视频| 五月天久久久| 婷婷五月天影院| 婷婷五月天另类视频| 亚洲欧洲99| 99色热视频| 婷婷色基地在线看 | 96精品久久久久久久久| 日韩伊人大香蕉| av在线免费播放观看| 欧美成人精品A片免费一区99| 日韩AAAAA| 玖玖无码中文| 丁香激情五月天| 丁香五月婷婷网| 六月丁AV| 天天成人综合视频| 狠狠做五月| 丁香5月激情网| 色六月婷婷| 久久婷婷人人| 日韩欧美一道四区中文字幕| 激情五月狠狠喔| 久久九九激情五月天 | 婷婷五月天av| 激情五月天在线视频| 欧美婷婷日本| 五月婷婷深深爱| 久色网址| www99精品| 五月丁香激情四射| 1024日韩| 日本综合色图| 色色五月婷| 色色色网站| 色播五月天激情| 99热这里只有精品66| 大香蕉520| 九九色精品| 亚洲激情四射| 九九综合九| 丁香花社区av| 色啪久| 51XX嘿嘿午夜无码| 久久免费试看120秒| 丁香婷婷午夜| av在线观看网站| 久99视频| 婷激情五月天视频导航| 99热这里精| 这里只有精品视频一区| 色五狠狠| 国产精品香蕉| 91婷婷五月天嫩女| 丁香五月成人| 成人丁香| 人妻少妇色综合| 思思9久久| 伊人久久丁香五月91| 九九久久腿| 热久69| 五月丁香六月婷婷成人| 99性视频| 色综久久久| 亚洲天堂aaa| 色婷婷先锋| 99热综合网| 伊大人久久| 光棍影院日韩精品| 丁香五月综合婷婷| 少妇婷婷五月天| 欧美激情综合色综合色| 能直接看的av网站| 日韩AV大全| 熟妇人妻中文字幕无码老熟妇 | 久久五月网| 婷婷色五月天在线观看| 五月花激情| 欧美成人AAA片一区国产精品| 成人午夜视频精品一区| 久久99精品久久久| 色色婷婷丁香| www天天干| 婷婷淫淫狠狠六月| 99无码| 97涩婷婷| 亚洲狠狠婷婷| 五月开心六月婷婷在线播放网站| 天天摸天天日天天舔| 五月天社区| 丁香五月之久操视频| 99熟女啪啪视频| 亭亭色天香| 天天做天天爱天天玩| 欧美激情综合色综合啪啪五月| 超碰在线个人观看| 亚洲天堂99| 26UUU精品一区二区c〇m| 丁香五月婷婷AV| 亚洲深喉aV| 色人久夂| 伊人色综在线| 天天看A片| 又大又粗九一在线| 五月婷婷|欧美| 婷婷激情综合色五月久久,色婷婷丁香花,丁香婷婷五月情天,久久婷婷五月综合色 | 日韩人人操| 伊人久久99| 欧洲免费视频色| 色五月婷婷综合| 激情综合九| 婷婷99狠狠| 婷婷五月色激情欧美激情| 女同激情久久av久久| 色五月婷婷成人| 狠狠色色综合| 色狠狠色噜噜噜a天堂一区| 综合AV在线| 一本到不卡高清DVD| 涩涩五月天综合| 久久a热| 婷婷久久网| 九色自拍| 婷婷五月综合激情免费视频| 色噜噜狠狠色综无码久久合欧美| 人妻激情久久| 色亚洲无码| 国产精品日韩十五区| 超碰在线人妻| 99精品久久久久| 亚洲色情在线| 欧美99| 人人97碰| 五月婷视频在线| 超碰亚洲欧美| 国产伦理精品高清在线观看网站一区二区 | 国产精品成人网址| 国产乱码久久| 天天肏视频| 免费在线a| 深爱激情网五月天| 五月天激情网站| 亚洲AV人人操| 色色综合激情| 综合久久8| 99在线视频精品| 五月天啪啪| 超碰在线成人| 天天搞天天爽| 99久久婷婷精品视频| 翔田千里aV中文字幕| 婷婷综合五月| 婷婷色网站| 婷婷刺激综合| 国产视频福利| AAAA网站| 欧美婷婷综合网| 草做免费在线观看| 97人人操人人干| 第四色色六月色综合| 99超级碰免费视频| 自拍视频在线观看9| 欧美VA在线| 思思干精品| 蜜桃五月天| 五月天操逼激情| 五月丁香六月婷婷不卡免费无码| 成人视频网| 99久热这里有精品| 欧美性猛交AAAA片黑人 | 操操操www.com| 日日天天干| 亚洲网站在线鸭子av| 九九热只有精品| 国产成人AV在线播放| 婷婷久久99| 91干视频| 狠狠干综合| 欧美噜噜噜草| 日本99在线| 成人午夜无码视频| 日本综合久久| 五月丁了香蕉综合| 丁香六月婷| 成人五月天丁香| 99视频只有精品| 欧美丁香婷婷天天操| 成人精品视频99在线观看免费| 亚州欧美国产久精国产99综合视频| xx久久| 激情五月天黄色小说| 天天做天天爱天天爽| 色五月丁香激情视频| 欧美性生交XXXXX无码小说| 色婷婷五月基地在线| 久久精品国产精品| 色性日本| 五月婷婷色色网址| 婷婷色片| 色婷婷黄色网络| 婷婷性爱| 婷婷亚洲五| 伊人久久丁香狠狠婷婷综合香蕉 | 婷婷成人AV| av久热| 五月激情丁香五月| 97干干干丁香| 热思思| 99福利导航| 91九色首页| 夜夜操夜夜姧| 日本偷拍九九九| 国产精品美女| 成人五月天在线观看| 99精品国产在热久久| www.久久av.com| 婷婷趴趴| 成人电影一区| 色。 婷婷婷| 激情婷婷在线| 九九香蕉网| 日韩狠狠色婷婷| 婷婷伊人綜合中文| www.久久久久久久| 激情伍月 欧美| 99欧美热| 天天操天天操天天操天天操天天操天天操| 日本三久久| 天天爽天天日| 深爱五月网| 99热e| 99久久喉9| 色综合久久88色综合天天99| 亚洲99手机免费看视频| 色婷成人狠干|