99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜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
返回資訊列表
欧美日韩99| 色婷久| 午夜精品久久久久久久爽| 先锋影音av色五月天资源站| 九九99热| 五月丁香婷中文字幕 | 欧美婷婷综合网| 久青操| 激情涩涩网| 激情美女五月天激情在线| 99热在线这里| 99色视频| 色狠狠综合入口| 久久丁香婷婷五月天| 色色色色色色综合| 婷婷五月天亚洲| 九九婷婷五月天| 日韩免费99| 婷婷五月深情丁香深爱日韩| 久久性爱视频网站| 少妇高潮呻吟A片免费看软件 | www.色综合| 97超级免费无码| 九九aV| 精品福利911| 色五月色五天免费视频| 五月天激情小说| 97干在线免费| 五月婷婷激情色情网| 久草热在线视频| 丁香在线视频| 五月婷婷啪啪网| 婷婷丁香五月天色区| 精品久久人妻| 国产99久| 98毛片| 天天干天天干天天操| 五月婷婷啪啪| 久婷五月| 91久久电影| 99国产精品久久久久久久久久久| www99精品| 欧美久久婷婷| 97高清国语自产拍| 99re熱| 色婷婷五月天激情在线观看| 天天日天天久久青青| 中文字幕综合| 五月天成人小说| 色色热| 久9精品| 人妻五月天激情开心网| 极品人妻VideOssS人妻| 99热久草| 九九热最新| 91打屁股免费看| 久婷婷| 激情五月视频在线婷婷| 色噜噜丁香| 91久久婷婷| 这里只有精品无码| 丁香五月成人自拍| 婷婷色爱| 99丁香五月| 激情综合自拍五月婷婷色五月| 色色亚洲视频| jiuse91在线| 69婷婷丁香午夜| www,天天干| 亚洲av成人电影在线观看| 婷婷色五月久久| 天天日天天插| 热的国产99热| 99久久婷婷国产综合| 99九九精品视频| 激情综合色播| 婷婷亚洲久久| 99视频只有精品| 婷婷5月久久综合网站| 五月丁香怕怕综合| 久久98| 丁香五月另类色婷婷麻豆| 九九成人视频| 久热超碰91| 国产婷婷五月色情综合| 日韩小视频在线99| 五月婷婷婷婷网| 国产精品久久久久久喷浆| 丁香六月婷月91婷月| 超碰免费99| 婷婷欧美激情| 婷婷97碰碰| 香蕉伊人综合| 色哟哟精品| 91一道本| 丁香五月色网| 亲子乱AV一区二区三区下载| 色婷婷久久| 国产成人网站在线观看| 亭亭五月色男人| 久久五月激情| 色五月人妻| 在线色色| 色婷婷在线视频| 丁香五月天啪啪| 五月婷色色| 99热这里只有精品1025| 激情图片五月天| 中海油常州环保涂料有限公司| 99久久久久| 99热精品观看| 婷婷视频网| 婷婷色五月激情| 天天色天天日| 婷婷涩涩网| 99热 精品在线| 啪啪啪五月天| 99国产欧美视频| 丁香五月婷中字幕| 大香蕉99热| 色色婷婷丁香| 六月色日韩| 99热超碰在线| 17.c黄色| www.日本91| 亚洲综合草草| www.激情五月天.com| 风流少妇A片一区二区蜜桃 | 五月激情六月宗合| 色狠狠综合网| 日本在线观看91| 六月婷婷色综合| 婷婷综合在线播放| 五月丁香激情综合| 玖玖资源天天无码| 超碰99热精品| 五月天社区| 丁香五月六月婷婷自拍| 婷婷综合另类| 26uuu日韩| 欧美成人热| 99丁香五月| 很很干夜夜干| 26uuu青青| 五月丁香六月婷| A久网| 視频福利乱色| 九九色热| 婷婷五月天综合久久| enecarbon-materials.com污K127封锁请涟系@wip1688 | 婷婷丁香无码专区| 婷婷五月精品中文字幕| 激情深爱综合| 日韩成人电泉AV| 玖玖爱综合网| 夜夜夜叫天天天做| 强伦轩人妻一区二区电影| 久久性爱视频| 色婷婷五月天偷拍| 青青操绿aaa一区日v| 99亚洲精品综合在线| 五月丁香影院 | 久草婷| 婷婷 伊人 久久| 六月色伊人婷婷| 亚洲综合五月天婷婷| 狠狠色丁香婷婷久久综合| 大香蕉伊人久久| 国产视频色色色色色色色 | 六月色色| 亚洲综合五月天婷婷| 我爱大香蕉| 中文字幕免费高清电视剧| 色狠狠综合入口| 色五月婷婷色| 欧美日韩中国| 免费无码毛片一区二区A片| 日韩在线婷婷五月天综合| 色碰碰| 韩国中文字幕91| 丁香美女五月天婷婷| 99热欧美在线观看| 香蕉网久久| 国产精产国品一二三在观看| 中文字幕,综合,91| 六月婷婷日| 色婷久| 色色国产| 天堂中文国产| 色婷婷五月综合网| 丁香婷婷综合精品六月初| 久久99激情五月天| 欧美人与性动交CCOO| 99热这里只有精品99| 激情婷婷五月女| 婷婷五月天丁香成人社区| 免费AV播放| 激情丁香五月| 天天做天天摸| 五月丁花色综合网| 天天综合色丁香| 高清国产AV| 色婷婷成人做爰A片免费看网站| 色色色com| 日日色五月天| 欧美婷婷六月丁香综合色| 色色色五月| 无码AV免费精品一区二区三区 | 在线理论片| 国产精品成人AV在线| 色五月丁香一区在线| 99热热这里只精品996小说| 色综合综合综合| 丁香五月婷婷网| 色噜噜狠噜噜视频| 五月婷婷 激情五月| 久这里只有精品| 婷婷爱爱蜜臀天天操| 日本韩国视频在线观看社区免费的9| 五月天激情亚洲| 综合网亚洲| 婷婷六月中文字幕| 99热这里只有精品13| 久久丁香五月综合六月激情红杏视频| 91黄操| 亚洲色婷婷久久99精品91| 亚洲视频一区| 成人国产欧美大片一区| 伊人综合网站| 婷婷丁香六月| 色播五月天激情| 激情五月天开心| 热99AV网站| 5月婷婷六月丁香| 人人草公开操| site:xiongshengzz.com| 色综合中文色综合网| 伊人影院久久网| 极骚大香蕉伊人| www.色99| 超碰91在线| 色色色成人网| 九九色色| 久久激情视频| 欧洲色| 天天干天天干天天| 久久久人妻| 色五月丁香五月| 人妻久久久久久久 | 色情·com| 亭亭五月丁香综合欧美| 狠狠色婷婷在线| 99视频内射三四| 婷婷久久五月丁香| 丁香五月婷婷狠狠色| 97视频91| 亚洲综合在线伊人婷| 99视频自拍| 操久久网| 2014天天爽| 婷婷五月天激情文学小说| 影音先锋色婷婷| 久久网日本| 97资源欧美日韩大香蕉超碰一区| 色综合激情| 亚洲精品视频在线播放| 五月伊人综合| 五月婷婷香蕉| 五月丁香AV在线| 日日夜夜综合| 国产精品色色| 色综合激情| 九九色影院| 亚洲情欲| 国精产品一区一区三区免费视频| 97久久婷婷色| 五月天伊人久久| 开心五月婷婷综合在线精品素人| 丁香五月婷婷激情尤物| 99久久婷婷国产综合精品草原| 99视频内射三四| 掩去也综合五月视频| 久久最新色色色| 思思99热在线| 丁香六月婷婷姐网| 婷婷综合视频| 激情五月综合网| 97色色视频| 欧美69久成人做爰视频| 久久人操-久草婷婷-成人AV| 伊人久久五月天| 激情五月天激情网| 亚洲亚洲永久无码777777| 人妻久久人妻久久第一区| 婷婷五月色综合| 操91| 婷婷五月综合国产精品| 欧美超碰人人| 九玖视频这里只有精品| 亚洲精品色色色| 五月丁香六月在线| 热99这就是精品视频| 国产做爰视频免费播放| 久久天堂色| AV在线观看网站| 九九热只有精品6| 激情综合色婷婷啪啪六月天| 色情久久久| 久久精品这里只有精品免费首页| 中文字幕无线久必| 97在线刺激| 色综合色综合婷婷热| 色五月婷婷激情五月| 亚洲视色| 五月婷婷六月天| 婷婷综合性爱网| 久久精品女人天堂AAA| 婷婷色中文字幕| 国产探花AV在线| 99视频久久| 五月花激情| 五月激香蕉网| 色婷婷亚洲婷婷| 99热大片| 99视频在线精品免费观看2| 91久久久久久久久久18| 亚洲美女高潮久久久久久69| 五月天激情子轮| 天天肏在线观看| 高清一区二区三区日本久| 丁香五月婷婷亚洲天堂| 亚洲俩性性爱图片久久第六页| 另类五月激情| 五月丁香婷婷啪啪| 精品牛仔裤超碰| 色情播放| 五月丁香六月成人| 色久一| 99爱欧美| 久久婷狠狠色| 九九色婷婷Av| 欧美精品久久久久久视频观看| 天天摸天天做天天爱天天爽| 国产精品色色| 婷婷射丁香| 丁香五月天成人| 婷婷色影院| 婷婷五月丁香四射| 欧美美女国产日韩一区二区久| 五月婷婷之综合激情| 五月天婷婷社区| 九月av在线| 久久人妻乱子伦| 五月激情综合网| 99国产精品久久久久久久久久久 | 五月天成人综合| 婷婷五月天大香蕉| 人人做天天爱| 亚洲亚洲人成综合网络| www激情| 99热这里精品| 欧美婷婷丁香社区在线播放| 亚洲中文无码成人| 婷婷激情五月综合| 超碰97免费在线| 日本成人噜噜| 国产午夜精品AV一区二区麻豆| 日本99在线| 思思热久久爱| 国产午夜精品一区二区三区四区| 99色在线视频观看| 久月婷婷| 夜夜躁婷婷AV| www夜夜操| 日韩欧美成人一区二区三区| 色青青五月| 91日本在线观看| 月丁香久久久| 日韩操| 67194国产| 任我鲁这里有精品视频| 日日干天天爽| 91人人看| 九九综合久久| 精品日本视频444| www.国产亚洲69ty.久久久久久久久久久久 | 99九九精品视频| 丁香五月天婷婷大香蕉| 性生活久久朋友人妻| 国产69久久久欧美黑人A片| 99色视频| 丁香五月影院| 超碰在线人妻| 久久99网站| 久久婷婷丁香| 亚洲不卡欧洲| jiujiujiuwuyuetian| 99爱在线精品视频免费观看| 91在线看片| 麻豆123区| 日韩免费视频| 国产精品五月丁香| 成人国产欧美大片一区| 五月丁香拍拍激情综合| WWW.国产| 超碰精品手机在线| 影音先锋日本三级资源| 热久久视频99| 激情五月婷婷视频| 久久性爱视频久久性爱视频| 激情婷婷五月在线合集| 激情内射p| 五月婷久久综合| 日日艹思思热| 丁香五月成人自拍| 5月婷婷6月六月丁香| 中文字幕欧美精品久久| 六月综合婷婷开心伊人| 久久精品综合色| 亚洲无码yw| 综合伊人久久| 91精品久久久久久久| 99ri久久| 久久机热/这里只有精品| 婷婷五月天最新综合你懂的 | 久久久中文| 99热精品10| 丁香六月婷婷| 丁香九月综合激情| 97人妻碰碰碰碰碰久久久久久| 99re在线这里只有精品视频首页| 久草嫩草在线观看| 999久久久国产精品| 天堂综合久久| 天堂A∨在线| 亚洲激情综合| 黄桃AV无码免费一区二区三区| 6080av| 色九四色| 色色色婷婷| 91vip在线观看| 丁香五月欧美色综合| 丁香婷婷六月| 9l视频自拍九色9l视频在线观看| 超碰人妻在线| 国产又爽又猛又粗的视频A片| 色天天综合成人网| 99九九视频| 级情九色| 五月婷婷中文网| 玖玖@三月天天丁香婷婷| 色色色色色网| 99热最新地址在线| 秋霞AV吧| 五月丁香成人小说| 久久五月视频| 丁香五月婷婷综合激情哟哟哟| 婷婷五月天激情开心网| 久久综合婷婷| 黄网在线免费观| 色婷婷久综合久久一本国产AV| 色哟哟性爱av| 99综合免费视频| 欧美英丁香开心快乐六月天网| 午夜福利8055| 这里只有精品视频99| 色国产五月| 色婷婷亚洲综合av| 超碰亚洲天堂| 激情婷婷五月天在线观看| 大香蕉75线| 26uuu国产| 五月综合六月丁| 激情亭亭五月| 国产精品国产成人国产三级 | 中文字幕AV网址| 99热官网| 99性色| 亚洲五月天,激情视频| 亚洲视频在线网站| WWW激情五月天| 91丨九色丨国产在线| 五月丁香亚洲综合| 99操逼| 99九色视频在线观看| 成人做爰A片免费看网站找不到了| 婷婷五月天激情五月天深爱五月天| 婷婷开心激情五月激情网| 五月婷婷成人w| 思思热久久久久思思热| 99九九视频| 日本精品99网站| 久久五月婷| 五月丁香花成人社区| 五月婷视频在线观看| 香蕉大综综综合久久| 六月婷婷激情| 日日操天天爽| www超碰| 日本精品人妻无码77777| 夜色热久| 91碰碰碰| 99re鈥哸鈥唙| 国产亚洲在线| 玖玖精品婷婷| 五月婷婷视频啪啪美女| 九九热最新| 色欲久久综合| 第四色五月婷婷| 99热精品少| 丁香婷婷五月| 久久99国产综合精品免费| 婷婷丁香五月天熟女丝袜| 国产精品成人在线| 终合激情网| 五月天激情影院| 日韩一级一片内射视频4K| 97资源碰碰在线| 婷婷深爱五月天在线| 可以免费观看的AV| 婷婷五月色播天| 久久精品五月天| 五月丁香六月停停| 久热这里只有精品6| 超碰操日| 婷婷大美在线| 天天狠天天叉| 丁香五月天狠狠操| 99视频只有这里精品| 五月天综合视频| 丁香五月婷婷亚洲激情四射| 婷婷五月天人妻| w婷婷五月婷婷w| 婷婷激情六月中文| 色国产五月| 天天肏视频| 五月婷婷激情在线| 五月丁激情| Av大香蕉| 婷婷操久久| 91色情播放| 亚洲亚洲人成综合网络| 婷婷五月天成人导航| 97色色综合| 色在线免费观看| 开心婷婷五月激情网小说| 国产精品爽爽久久久久久| 五月丁香婷婷钟和色图| 激情综合激情五月| 国产乱子轮XXX农村| 天天日天天做天天舔| 婷婷久久免费| 超碰97免费在线| 久久精热| 丁香五月婷婷欧美成人色图| 六月丁香VA| 热日韩欧美| 五月天小说激情| 五月婷婷综合在线| 久久五月天合网| 99爱这里只有精品免费视频| 任你爽视频| 午夜激情婷婷| 日韩成人av在线| 欧美色色色色色| 日本久久性| 婷婷五月天av| 天天久综合网永久入口17v| 亚洲精品99| 99精品高潮| 亚洲色色色| 97久久五月丁香婷婷| 99热这里只有精品9| 九九av在线| 五月天丁香成人| 色婷婷色情| 成人综合AV| 97资源碰碰| 人人爽天天爽| 青青热久精品视频在线观看| 久久AAAA片一区二区| 色五月色综合| av人人操| 九九热视频99| 79精品在线视频| 伊人在线视频| 综合色色色| 操日视频| 开心激情站| 亚洲激情图文小说| a免费在线| 五月天成人网在线观看| 91精品久久久久久| 国产乱人偷精品人妻A片| 色色婷婷综合网| 国产免费av网站| 婷婷五月综合色拍| 欧洲婷婷五月天| 91久女| 天天爽天天日| 丁香色五月婷婷17C| 欧美成人猛片AAAAAAA| 色99热| 六月婷婷综合久久| 欧美成人精品A片免费一区99| 婷婷丁香激情| 九洲一级A片| 亚洲欧洲另类| 天天摸天天做天天爱天天爽| 四色综合网| 国产性爱大片久久| 亚洲成人免费在线| 天天狠狠色综合| 成人版视频在线观看| 专区无日本视频高清8| 天天天久久人人人合| 大香蕉人妻| 中文字幕人妻一区二区| 26uuu精品国产| 婷婷综合在线观看视频| 91人人爽狠狠狠| 国内精品99| 人妻无码精品一区| 五月天开心婷婷激情网站| 婷婷五月天中文字幕.| 97婷婷久久丁香| 可以免费观看的AV| 亚洲午夜一区二区| 精品51XX| 丁香伊人综合| 五月婷俺去也| 人人干99| 亚洲无码猫咪| 91无码色色| 99久re热视频精品98| 色色亚洲五月天| 五月丁香好婷婷A片网| 久久99婷婷| 一区二区传媒视频| 欧美色片中文字幕久久久久| 丁香五月天啪啪| 日日夜夜干| 无码色色| 亚洲麻豆乱码国产2028| 538在线| 黄色三级日本| 一本久道综合99| 久热精彩视频98| 嫩草AV久久伊人妇女超级A| 五月丁香激情综合网| 天天影视天天爽天天草| 激情深爱五月| 国语精品探花| 色情免费视频播放| 五月丁香六月欧美综合| 亚洲小视频免费观看| 五月天成人综合| 色婷婷天堂| 伊人玖玖婷婷| 啪啪夜久久| 婷婷久久婷婷| 色综合狠狠色| 婷婷综合在线播放| 综合色影院| 3p久久| 99色精品| 人人操97| 97成人丁香婷婷| 激情综合网丁香| www.yw尤物| 日韩成人精品中文字幕| 色婷婷婷av| 色五月天.con| 777久久综合视频 | 99亚洲欧洲| 丁香五月综合在线| 日日做夜夜爱| 色五月激情| 亚洲色优| 六月婷婷久久| 婷婷丁香成人| 精品久热| 9视频在线成人网站| 91操黄| 九月大香蕉| 人人操人人干AV| 精品成人在线观看| 五月花综合| 婷婷天天插天天爱| 亚洲bt丁香五月天婷婷激情小说| 天天天综合网| 日韩黄黄| 亚洲亚洲人成综合网络| 五月丁香婷婷激情爱爱| 97久人人| 夜夜躁狠狠 | 国产综合81p| 五月丁香啪啪综合| 久久综合网免费视频| www.五月婷婷久久.com| 久久99热这里只有精品| 日韩欧美一级大黄网站| 婷婷五月花| 丁香六月婷婷色XXXXX| 亚韩在线视频| 99综合99| 九色啦蜜臀| 99久久99九九99九九九| 碰超亚洲| WWW久久久| 26UUU在线观看| 成人丁香五月天| 91丨九色丨东北熟女| Blackedraw视频一区二区| 五月丁香六月婷婷综合| 深爱婷婷基地| 人。妻久久| 日本一级黄色电影| ...婷婷五月综合不卡,国产在线手机| 五月色情婷婷| 成人丁香五月| 久久久久久人妻| 九月丁香欧美综合| 婷婷久久视频| 99九九在线观看免费| 免费无码毛片一区二区A片| 激情九月天天天天婷婷| 免费试看小视频 99| www.色五月.com| 以及AA大片看看| 99操逼| 欧美α√| 日本黄色一级| 九九综合视频在线观看| 亚洲欧洲午夜成人精品av| 国产精品第一国产精品| 欧美日朝成人| 日本婷婷| 99热10在线高清播放| 久久五月天婷婷| 激情五月天激情五月天| 青柠影视免费高清电视剧| 超碰九色| 日韩色久| 成人网页在线观看| 天天做 天天爱| 99re在线观看| 影音先锋按摩| 综合激情在线| 人操人人| 色婷五月天综合网| 天天干在线播放| 99热这里有精品6| 99精品在线播放| 六月丁香六月婷婷欧美| 五月天啪啪啪| 五月色情婷婷| 色婷婷综合网站| 色欧美一级| 6月丁香婷婷激情| 综合网亚洲| 97精品欧美91久久久久久久| 日韩色色视频| 男人的天堂97| 狠狠色噜噜狠狠狠888| jiujiuxiangjiaowang| 五月丁香六月停停| av在线播放网站| 深爱激情四射| 免费看欧美成人A片无码| 久久婷婷青草五月天| 91丨九色丨大屁股| 秋霞性爱AV| 99久久久久| 激情综合五月丁香| 天天肏高清在线| 久久五月天精品视频| 亚洲综合五月天婷婷| 丰满人妻一区二区三区| 五月天国产成人| 依人大香蕉在钱1| 色玖玖导航| 在线五月色播| aV欲望人妻中文字幕| 色五月在线观看| 五月婷婷六月爱| 日韩色色一区| h在线看免费版在线看| 亚洲激情.com| 99亚色色色| 综合网精品99| WWW.99热| 婷婷五月天激情五月天网站| AV操逼网| 欧美婷婷色| 九九婷婷综合| 色99综合视频| 91尤物九色在线| 欧洲MV日韩MV国产| 丁香婷婷九月| 人人干Av| 成人AV免费观看| 99在线视频操999| 日韩999| 六月色丁香中文字幕| 色婷婷综合久久久久| 丁香五月婷婷啪啪视频| 婷婷亚洲综合| 狠狠搞亚洲| 噜噜色天天开心| 91VIP在线观看| 五月激情综合网| 人人妻久久妻| site:picc-up.com| 91色在线| 99热超碰人| 性色五月天| 五月婷婷在线免费观看| 五月丁香六月婷婷综合免| 国产婷婷综合| 婷婷婷婷午夜| 九九视频在线观看| 中文字幕 中文字幕明步| 五月婷无码| 棕合影院色色| 99久久久精品| 日本一级一级一级一级| 97色欧美| 婷婷五点亚洲| 99色看这里只有精品| 激情久久久久久久久久久| 亚洲精品**不卡在线播he| 狼人久草| 99玖玖免费视频| 久久久精品人妻录| 天天上天天爽| 五月丁香香蕉| 日韩操女| av五月天婷婷丁香| 极品少妇XXXX精品少妇偷拍| 99精品久久久久久久婷婷| 婷婷五月美女直播| 亚洲五月天伊人| 激情综合啪啪啪| 久久色五月天| 婷婷五月超碰| 超碰只有精品在线| 久久XX| 国产精品久久久久久白浆色欲| 99热99热在线| 精品人妻久久久久久久| 色播五月婷婷综合| 大香蕉婷婷| 亚州操操| 婷婷九月在线| 色碰97| av网址在线播放| 久碰视频| 丁香在线视频| 日本片日本片祼观看网站在线看中文版网页在线看 | 久久久高清| 亚洲欧洲中文日韩久久AV乱码| 天天综合精品| 草草视频91| 五月婷婷色影院| 五月亭亭开心网| 热思思| 性生活久久人妻| wwwxxx五月婷婷小说| 欧美激情五月天在线观看| 99热综合在线| 丁香五月激情婷婷视频| 99热99干| 日日干天天射| 色九月婷婷综合| 狼人婷婷综合| 久碰婷婷视频| 丁香婷婷综合激情五月色| 五月丁香激情啪啪网| 嫩草视频。| 五月丁香久久激情综合| 99在线视频。| 五月婷婷伊| 偷拍丁香九月激情| 性欧美大战久久久久久久83| 成人午夜天| 欧洲MV日韩MV国产| 99婷婷精品推荐在线视频| 亚洲无AV在线中文字幕 | 五月丁香婷草| 九九热10| 色激情综合| 97干在线视频| 99热首页| 日本片日本片祼观看网站在线看中文版网页在线看 | 99免费热视频在线| 成人电影AV在线观看| 欧美激情综合色综合啪啪五月| 91ncm视频| 色六月婷婷| 九九综合精品| 亚洲精品网站色视频| 五月天天天操天天爽夜夜操| 99久久国产宗和精品1上映| AV天堂淫乩| 色五月五月丁香| www国产亚洲色婷婷com| 久久 视频这里只有精总| 青青草原福利在线| 婷婷五月丁香在线视频| 天天色视频| 97性视频| 26uuu| 婷婷五月花| 伊人久久丁香狠狠婷婷综合香蕉| 久草免费福利视频| 激情五月天福利| a在线免费v| 色啪影院| 这里只有视频精品| 热久久视频99| 五月婷婷真爱激情网| 欧美va在线观看| 91黄操| 五月婷婷婷| 香蕉久久av一区二区三区| 操97在线观看| 亚洲免费av观看| 狠狠久久婷五月| 丁香五月六月久久综合 | 成年视频免费观看| 五月激情婷婷综合| 亚洲VA欧美VA| 五月丁香婷婷伊人| 五月天 无码| 伊人久久99| 色色亚洲| 国产女生爱爱AA| 伊人综合色干| 丁香六月婷月91婷月| 婷婷五月天激情综合深爱| 五月花激情| 激情久久肏屄视频| 99精品在线| 久9热插入| 亚洲在线操| 二人电影免费版在线观看| 天天天天色天天天天天干| 丁香婷婷九月| 内射爽无广熟女亚洲| www.com在线操视频免费观看| 久超超碰| 亚洲丁香五月深爱五月| 六月丁香五月天| av九九| 亚洲春色奇米影视| 二级黄色毛片| 翔田千里aV中文字幕| 婷婷婷婷色| 久久精品99| 另类丁香五月天区图| 超碰国产AV| 99亚色色色| 中文字幕婷婷五月天在线观看| 婷婷97碰碰| 搡BBBB搡BBB搡18| 91丁香婷婷综合资源| 激情五月深爱五月| 精品久久久人妻| 青青草五月天| 在线播放成人| 久久视屏这里只有久久| 六月婷婷久久大全| 九九热超碰| 激情综合丁香| 日本色频| 婷婷五月天在线一区| 激情第四色| 婷婷五月六月| 99热6这里之有精品| 玖玖热视频| 超碰人人色| www.精品久9| 99er国产| 五月丁香自拍| 天天久综合网永久入口18| 五月婷婷偷拍| 天天爽夜夜爽夜爽精品| 无码任你操| 99ri国产精品| 五月激情网五月综合网| 99久久精品国产色欲| 日日做A爰片久久毛片A片英语| 婷婷五月综合啪| 婷婷玉月丁香五月在线视频| 欧美影院婷婷| 精品操逼一区二区| 少妇日麻屄| 99热成人精品网站| 日韩成人影片网站| 99久热| 天天插天天射| 激情婷婷五月丁香啪啪啪| 国产精品久久久久久白浆色欲| 综合激情五月天六月婷免费视频| 丁香六月婷婷| 综合久久影院| 婷婷综合精品视频97| 精品一二三区久久AAA片| 日韩人妻无码精品| 玖玖资源站蜜臀| 黑人糟蹋人妻HD中文字幕| 日韩狠狠色| 日本色狠狠| 99婷婷精品推荐在线视频| 五月大香蕉| 日本色爽| 热99色| 狠狠婷婷爱| 色色五月天婷婷| 色欲婷婷五月天丁香| 丁香婷婷视频一区二区| av九九| 最新色色五月天| 99在线观看精品视频| 碰碰人人人| 色天天狠狠干| 99碰碰| 色婷婷综合影院| 99热无码| 五月丁香六月片| 日韩一66精品| 99热97| 婷婷综合精品| 99综合网| 日韩精品一区二区刘| 亚洲色色精品| 风流少妇A片一区二区蜜桃| 色情综合| 99热主页日本| 黑人熟妇一区二区三区| 狠狠xx| 色色五月天婷婷| 激情五月综合久久| 国产精品人人妻人人爽| 人妻免费网站| 亚洲婷婷激情888精品久| 在线观看国产高清视频免费网站| 99热色无码| 丁香五月综合| 丁香五月婷婷色情综合| 久久综合影院 | 丁香九月婷婷| 色婷婷中文在线| 欧美日韩成人在线观看| 9久久精品视频| 久久婷婷五月天蜜桃| 九九色video| 五月婷婷无码专区| 字幕网AV中文字幕| 婷婷五月天激情亚洲小说| 欧美性色A片免费免费观看的| xxxx五月| 五月丁香六月| 色婷婷综合久色AV五色最新| 日日色综合| 欧美日本VA| 欧美婷婷综合| 五月天激情播播网| 五月激情综合网| 天天天久久久| 亚洲综合在线视频| 精品婷婷五月视| 成人做爰高潮A片免费视频| 久久99热这里只有精品23| 99性爱| 亚洲五月婷婷在线| 麻豆AV一区二区三区| 色综合五月在线| 综合欧美五月婷婷| 丁香五月婷婷骚视屏| 超碰熟女农村在线69| 久99热| 激情骚五月| 欧美丁香五月| 国产精品操| 五月丁香激情综合网| 俺也去婷婷五月天第五色| 91婷婷| wwccc久久久| 偷拍九九热| 99乱视频| 97色欧美| 久久99久久久久久| 色VA| 国产精品天天狠天天看| 色婷婷综合网站| 久热精品在看| 亚洲在线操| 99久热这里只有精品视频删减版| 人妻啪啪啪| 天天搞天天色综合| 三级三久久线久久99久目本WW| 丁香五月婷婷色| 另类少妇人与禽zOZZ0性伦| 精品久久久久久久久久久久人妻| 9久热视频| 日本九九视频| 成人色五月天婷婷| 国产精品扒开腿做爽爽爽A片唱戏| 开心五月激情五月丁香五月婷婷| wwww.9免费视频| 超碰人人91| www.xtbsty.cn.com蜜乳AV| 国产AV国片偷人妻麻豆| 婷婷五月激情在线| 亚洲色频| 美日韩成人| 激情五月综合网最新| 色婷婷偷拍| 操逼三区| 婷婷久久五月天丁香| 久狠狠狠| 欧美影院| www.久久99热地址发布| 99成人| 久久综合影院| 色综合中文| 久久久99久久| 中文字幕在线日亚州9| 操久久网| 一起草性爱不卡视频| 综合网天天| 丁香五月电影| 少妇被下春药玩弄A片| 日本乱子人伦在线视频| 99riav 亚洲| 亚洲网站观看视频| 大香蕉视频婷婷| 狠狠 久久| 欧美丁香五月| 色99自拍| 激情综合网五月在线播放| 轮奸综合网| 亚洲在线激情婷婷五月| 深爱激情网婷婷| 九九婷婷五月天影视| 五月丁香激情婷婷综合| 色播五月婷婷五月| 噜噜在线| 婷婷五月天成人网| 亚洲另类在线观看| 九月激情婷婷丁香| 丁香婷婷综合色五月激情国产基地| 99热综合| 天天色,天天操,天天射| 精品福利911| 五月花丁香婷婷| 色五月婷婷基地| 91九色国产| 色99视频| 亚洲日比视频| 人人操人人爽成人AV| 99综合视频一体| 伊人六月无码视频| 五月亭亭六月天| 九九热精品99| 九九色精品| WwW色婷婷| 五月丁香婷婷婷激情爱爱| 五月丁香操婷逼| 色五月婷婷成人视频| 狠狠五月综合在线| 日韩欧美成人片| 欧美久热| AV在线不卡网站| 久久99久久99精品免视看婷| 天天日人人| 婷婷丁香五月网| 97人妻碰碰中文无码久热丝袜| 黃色三级三级三级三级 qixing300.shrkbk.com www.jinbozs.com tianmiaosw.com | 色视频2025| 开心五月综合| 成人视频一区| 热婷婷在线视频| AV色婷婷| WWW、日本色丁香、co m| 美女五月狠狠| www.激情五月天.com| www.色婷婷| 91九色国产在线| 99国产小视频| 久久99激情| 国产ava| 婷婷日韩| 成人精品视频99在线观看免费| AV五月丁香| 激情综合网五月激情| 五月丁香六月婷婷不卡免费无码| 色色狼人综合| 97婷婷久久丁香| 99超超碰| 五月天综合色| 九九色欲网| 天天日夜夜曹| 成人婷婷五月| 婷五月丁香俺| 99热综合在线| www.色色com| 婷婷久久色五月婷婷久久久| 久久九九re热| 另类婷婷丁香| 婷婷久久久| 在线成人av播放| 99re在线这里只有精品视频首页| 色情五月婷婷| 六月婷婷久久| 亚洲综合欧美色丁香婷婷888月图片| 成人片黄网站色大片免费毛片| AA丁香综合激情| 另类专区在线观看| 丁香六月婷婷色播| 色婷婷成人五月| 激情五月天免费视频| 五月丁香啪啪啪免费看| 色综合99| 99热99| 99热在线免费| 人人人操 超碰| Av性爱网站| 久久伊人大香蕉| 91丨九色丨熟女|老版| 日本高清综合网五月丁香| 亞洲自怕| 很操日本7| 婷婷五月天影院| www久久久| 狠狠色综合网| 欧洲一区二区| 天天色99| 丁香五月激情综合婷综| 丁香六月久| 99热在线播放精品| 夜夜操天天爽| 色婷婷六月| 婷婷中文字幕版| 免费看欧美成人A片无码| 丁香 婷婷五月| 伊人激情AV一区二区三区| 丁香婷婷五月天色综合| 天天干夜晚夜操| 丁香五月激情六月欧亚激情综合导航 | 天天弄天天操| 高潮毛片遮挡费高一百度| 激情五月丁香五月| 综合色99| 色色色免费视频| 六月丁香啪啪| 色婷婷狠狠| 99久热在线精品| 九九视频在线观看| 国产日批视频免费播放| 91狠狠综合久久| 色9色| 欧美性生交XXXXX无码小说| 思思热热久久|