免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

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
返回資訊列表
久久ri精品| 91丨九色丨丰满人妖| 99干免费视频| 色色色99| 五月天婷婷基地丁香| 亚洲AV影片在线观看| 性生活视频98791| 日本欧美国产| 婷婷干| 少妇人妻综合色6699| 五月丁香啪啪啪综合网| 丁香久久激情俄| 99亚洲天堂| 97五月天婷婷| 丁香五月aV| WWW·色色色·COM| ztEJj| 亚洲久久激情| 色婷婷a v| 国产又黄又爽又激情不遮挡视频在线观看| 97av在线视频| 丁香五月综合激情啪啪| 亚洲视频在线网| 99性爱视频| 538在线精品| 天天日,天天射,天天插| 九月婷婷久久| 精品在线网站| 99日本视频在线观看专区| 激情久久久| 五月六月丁香激情| 五月开心深爱激情网| 天天情天天狠天天透| 校园春色亚洲色| 久久久久9999| 激情久久肏屄视频| 五月激情综合网| 五月天激情小说婷婷基地| 66精品国产成人| 日本色色影院| 99视频在线啪| 婷婷五月天AV在| 欧洲电影在线观看免费版英语版 | 久久性刺激| 9l视频自拍九色9l黑人| 婷婷9月天| 国产一级片| 激情久久五月天| 五月丁香婷婷成人综合网| 婷婷色网| 色青青五月| 色五月涩涩婷婷蜜桃| 97色色色| 特黄三级片| 碰超在线九色| 婷婷五月天激情电影| 一起草日本| 99视频| 久青草影院| 色九亚洲| 色婷婷综合网| 怎么样可以看免费的一级av| 免费一区二区三区| 2021日韩无码| 色婷婷久久综合久色综| 日本一级一级一级一级| 欧日美女Va| 亚洲色综合| 黄网在线免费观看| 侠女刀之记忆电影在线看免费| 五月丁香婷婷爱激情综合网| 天天摸天天舔天天爽| 欧洲亚洲免费视频9| 五月丁香 啪啪| 国产9色在线/日韩| 丁香狠狠| 狠狠干综合网| 五月激情婷婷综合| 99综合免费视频| 婷婷欧美| 狠狠操狠狠| 欧美综合五月丁香五月天| 亚洲五月综合色播| 亚洲成人乱码av网站| 色优久久| 色久综合天天做视频| 99色最新在线视频网站| 婷色五月天| 超碰在线看| 天天干天天爽| 色色六月| 九九99久久| 亚洲精品网站色视频| 热久久77777| 99热这里只有精品最新| 婷婷伊人綜合中文字幕| 99re资源在线视频导航| 久9久9热久热| 狠狠干天天内射| 激情五月天无码| 五月丁香激情婷婷综合| 欧洲综合视频| 色欲色欲久久宗合网| 日本色色色色色色色色一色二色| 青草视频在线观看视频| 一起草无码| 成人五月天在线观看| 99视频精品全部免费 在线| 青青草原福利在线| 97操碰视频| 国产亚洲精品久久久久久牛牛| 综合五月天| 婷婷激情五月| 一起草aV| 亚洲五月天,激情视频| 激情丁香淫荡婷婷| 激情五月综合网最新| 少妇AB又爽又紧无码网站| 五月天色五月| 99色精品| 天堂AV在线看| 色狠狠综合| 亞洲自怕| 狠狠色婷婷7| 亚洲欧州色情在线观看| 超碰在线人妻| 狠狠第四色| www.日韩艹| 九九热免费视频| 五月天开心网| 这里只有精品亚洲| 能看的AV| 精品九九婷婷| 激情99。| 丁香五月六月综合激情| 玖玖婷婷色五月| 99这里只有免费的小视频在线观看| 亚洲第一精品网站| 亚洲欧美成人在线| 九月婷婷综合| 久操福利| 五月婷婷丁香大陆免费| 久久久WWW| 欧美久久婷婷| 成人av在线网| 2020久久婷婷五月| 九九aV| 婷婷操久久| 五月天色婷婷基地| 亚洲无AV在线中文字幕| 99re这里只有精品免费| 欧美日韩91| 大香蕉人在线65| 操射国产日本| 一本色道久久综合狠狠躁一二三| 天天干天天操天天干天天操天天干天天操 | 激情婷婷在线| 五月天色网站| 大香蕉五月婷婷丁香| 天天艹天天综合网| 久久五月天综合| 噜噜色五月| 欧美VA在线| 久久性爱99国产| 97色碰| 色婷另类| a在线观看| 夜色综合网| 五月丁香日逼| 夜夜撸日日操| 婷婷丁香五月天影院| 人妻自慰高清合集| 热99一二三| 五月色丁香激情| 1010日日无码| 亚洲超碰中文字幕| 婷婷丁香18| 日韩成人综合| 生活片五区| 四色五月视频| 伊人网啪啪| 欧美人人超级碰| 国产亚洲精久久久久| 成人五月天综合网| 婷婷久久色| 涩婷婷视频快播人妻| 婷婷开心深爱五月天| 五月丁香久久综合| 99在线爽| 久久久久久久久久久久久久久久一道本| 99色视频在线观看| 草久私拍| 国产欧美第五十五页| 丁香婷婷久久五月天| 日韩操| 91av传媒高清在线视频网| 五月丁香六月婷婷在线小说视频| 91婷婷视频| 日日夜夜小色哥| 人妻熟人中文字幕一区二区 | 综激情网| 日韩成人网站精品久久大全| 久久六月婷婷| 免费97碰碰| 91黄址| 九九热只有精品| 天堂爱爱| www.色色com| 一本色道久久综合狠狠躁小说| 99啪啪网| 五月婷在线播放| 色九九一二| 色综合久久中文| 丁香五月色色| 东京热五月婷婷| 色五月色五天免费视频| 色优久久| 国产精品日本一区二区在线播放| 人人爽天天爽| 激情综合五月激情XXXX| 婷婷狠狠爱| 五月天婷婷网站888| 激情小说五月天| 成人无码髙潮喷水A片| www.minyis.com【JT】币址百万U预算可预付QQ2101460746 | 亚洲欧洲色色| 色噜久| 日本一级一级一级一级| 婷婷丁香成人五月天| 91人人超碰在线| 色丁香五月婷婷| 嫩草AV久久伊人妇女超级a| 婷婷色一二三区波多野结衣| 久热大香蕉| 天天日天天干天天插天天射| 人人干天天舔| 五月激情射| 超碰在线人妻| 六月婷婷综合激情| 亚洲bt丁香五月天婷婷激情小说| 婷婷九月激情| 亚洲无码AV片| 五月丁香花成人社区| 26uuu青青| 伊人婷婷大香蕉在线| 亚洲免费av在线| 美女婷婷六月色| 五月丁香六月婷婷成人| 天天视频精品9| 五月丁香狠狠爱| 五月丁香AV在线| 91久久久久久久| 日韩砖区| 久色网| 久久这里只有精品无码| 超碰京东热av男人的天堂| 色色五月婷| 婷婷爱五月天人人爱| 色色婷婷五月天| 亚洲殴洲精品Av在线| 99综合网| 91久久精品无码一区二区三区| 亚洲丁香五月美女| 99热欧美在线观看| AV在线免费播放| tingtingseav| 成人AV在线中文版| 亚洲妇女熟BBW| 亚洲不卡| 九九热精品视频在线观看| 九九这里精品| 极品 少妇 内射| 婷婷五月天在线看| 色99视频| 久久激情视频99| 大香蕉七区| j五月香在线| 泰州成人视频| 精品人妻伦一二三区久| 一本久道综合色婷婷五月| 丁香五月婷婷色| 亚洲色色爱| 五月婷婷久久综合| WWW99视频| 亚洲精品444久久久久久| 五月天大香蕉av| 五月婷婷五月| 国产在这里只有精品| 人妻视频在线| 九九久久99精品免费观看www| 丁香色五月天| 人人操av| 国产精品色婷婷99久久精品| 成人AV在线网站| 五月婷婷激情综合| 99热免费精品| 久久婷婷五月天| 五月丁香六月激情综合| www.婷婷五月天.com| 婷婷五月六| 九九色色色| 婷婷婷五月香蕉| 五月桃花网综合| 成人在线观看精品| 日本在线观看aaa 99| 日操熟女| 婷婷的五月天另类视频| 久久久久视剧HD| 热99.com婷婷| 丁香久月婷| 射区导航| 成人做爰A片免费看网站找不到了| 9999三级片| 丁香五月区| 97精品自拍| 丁香五月综合| 天天日人人| 夜夜噜夜夜奇| 99在线观看视频| 狠狠xx| 色五月婷婷九月| 久久婷婷五月天激情| 天天干天天干天天干| 丁香五月六月综合激情| 婷婷爱五月天| 久热99视频在线观看| 久久综合五月情| 97狠狠碰| 久久久WWW| 啪啪啪大香蕉| 五月开心啪啪| wWwCom夜操wwW| 综合99在线| 婷婷丁香基地在线| 99在线免费视频| www.五月婷婷| 欧美婷婷色| AV中文字幕夜夜操b天天摸bb | 色综合久| 色色网站日本91| 99日在线观看视频| 婷婷丁香五月亚洲欧美| 天天操天天草天天草天天| 婷婷色五月丁香六月欧美啪| 丁香婷婷基地| 五月丁香婷久久| 91av无码| 天天做天天爱天天摸| 婷婷五月天色网久| 亚洲综合另类| 无码激情AAAAA片-区区| 九月丁香八月婷婷久久综合久97| 丁香五月婷婷无码AV| 天天操天天谢| 九九久久精品| 精品9l九九九九九77777| 亚洲AV网址| 激情综合网,婷婷| 婷婷激情五月天在线| 成人免费高清在线播放| 欧美激情综合色丁香婷婷五月天| 婷婷丁香五月六月激情| 蜜桃人妻无码AV天堂三区| 2020久久婷婷五月| 亚洲欧美婷婷五月色综合| 激情久久久久久| 亚洲国产无线乱码在线观看| 色九亚洲| 丁香五月无码| 婷婷五月天网| 欧日韩成人| Jh7Uf088VHafNm| 久久 婷婷 五月天| 日韩有码一区| 狠狠狠狠狠狠狠狠草| 婷婷五月色激情欧美激情| 五月激情在线| 婷婷五月天色| 久操97| 99在线精品免费视频| 色五月婷婷激情基地| 99热无码精品| 午夜婷婷| 丁香久久五月婷综合| 九九草热在线观看| 99热啪啪| 99热99在线| 婷婷五月视屏| 欧洲亚洲精品| 五月婷久久久久综合| 午夜丁香婷婷| 久久久.COM| 五月丁香 狠狠爱| 国产五月丁香在线| 99热手机在线精品| 大香蕉九九| 婷婷五月丁香五月| 日韩啪图| 爱草视频在线| 婷婷在线视频| 99久热这里有精品| 亚洲精品午夜国产va久久成人| 狠狠干狠狠操狠狠爱| 亚洲天堂AAA| 五月天综合在线| 久久婷婷夜| 五月花亭亭| 国外亚洲成AV人片在线观看| 人人玩人人橾| 亚洲色五月天| 夜夜爽天天| www.99热这里只有精品| 九月丁香婷婷| 亭亭五月丁香五月天激情| 先锋资源91| 激情五月天伊人av| 中文字幕中文有码在线| 美女主播野战视步页| 五月婷婷无码专区| 秋霞少妇AV网站| 五月激激网w'w'w| 成功精品影院| 99 热| 久久久久er热| 日韩一区二区在线播放| 久婷婷| 天天色天天射天天日| 国产精品视频免费看| 亚洲一级AV在线免费播放| 日日爽日日| 精品AV无码超碰| 色丁香婷婷| 婷婷五月天av小说| 99精品在线观看视频| 玩熟女五十AV一二三区| 天天干天天爽天天操| 中文字幕不卡网站| 性爱久久| 色色操| 国产精品美女| 伊人成人宗合网| 丁香情色五月| 亚洲综合激情五月久久| 中美月韩免费A片| www.色99| 色婷婷色五月丁香| 99综合成人视频在线观看 | 五月丁香啪综合| 人人妻人人澡人人爽| 六月丁香网| 久久超级碰碰| 最近韩国日本免费高清观看| 久久这里只有精品1| 97人人操人人操人人操人人| 超碰亚洲天堂| 久久机热这里只有 | 69精品人人人人| 欧美婷婷五月天综合| 欧美婷婷色五月网| 亚洲激情在线| 丁香五月天啪啪激情综和网| 色欧美影院| 亚洲第一综合| 另类综合婷婷五月天欧美视频| 亚洲一区二区无遮挡A片| 欧美日朝成人| 天天干天天爽天天操| 99热加勒比| 亚洲黄色影视| 五月丁香六月婷婷网| 婷婷五月大香蕉| 精品夜夜澡人妻无码AV| 色五婷婷在线视频| 五月天婷婷网站| 999九九九久久久99HD| 日本超碰在线| 人妻精品久久久久久久| 97操操操| 婷婷五月欧美AA片免费| 亚洲无码99| 五月丁香六月婷婷久久| 亚洲综合视频天天精品| 变天就操逼婷婷五月| 九色视频91| 久久视频这里99| 久久婷婷热| 精品亚洲国产成AV人片传媒| 91免费看片| 欧美日韩色色| 婷婷99狠狠| 综合网激情| 思思热久在线观看视频| 91超级碰在线| 色综合网页| 99热久| 99热这里只有精品3| 九九人妻福利| 全高清无码视頻| 黃色三级三级三级三级 qixing300.shrkbk.com www.jinbozs.com tianmiaosw.com | 日本丁香五月| 99色看| 中文字幕 码精品视频网站| 久久性都花花世界成人免费视频| 丁香六月激情| 婷婷色色婷婷| 色色cOm| 梁铮版蜘蛛女在线观看| 丁香五月性| 停停六月 综合| 99热在线观看| 99∨VTV| 色噜噜97视频在线观看| 久草五月天| 精品福利911| 99热91| 色色色999| 婷婷色爱| 婷激情五月| 另类综合激情| 只有精品视频在线观看| 黄色五月婷婷| 98色花堂98t.R| 婷婷综合干| 性欧美大战久久久久久久83| 天天插天天干| 色五月亚洲| 婷婷五月天第三页| 五月开心色| 99热在线观看免费| 婷婷丁香综合成人| 久久99成人性爱高清视频| 99视频精品视频| 五月天婷婷黄色视频| 另类A片| 免费97碰碰| 婷婷影院欧美| 97国产精品女人碰碰| 亚洲va久久久噜噜噜久久天堂| 拍真实国产伦偷精品| 激情五月天影院| 五月天激情亚洲| 综合久| 久久婷丁香五月| 六月撸婷婷| 超级碰碰91| 99玖玖在线视频| 97碰人人操| 色色网站免费| 99色色| 九九操操| 丁香视频| 啪啪激情综合| 久久xx| 99热永久在线观看| 婷婷五月天影视网址| 色色影院aaaav| 十月丁香婷婷| 五月天婷婷乱| 五月天天天色| 26.uuu丁香五月婷婷| 天天玩夜夜操| 91啪啪视频| 色丁香五月| 99热网站| 在线播放成人网站| 爱超碰性| 91久久国产综合久久| 大香蕉人人人| 久操热| 开心 五月 综合| 精品久久久久久久久久久久人妻| 天天操天天操天天操天天操天天操天天操 | 日熟女| 久久综合干| 色激情综合狠狠婷婷| 啪啪啪啪五月天| 99综合激情久久精品久久| 婷婷婷五月天最新综合你懂的| 免费观看欧美成人AA片爱我多深 | 综合逼五月激情婷婷| 99热99这里有免费的精品| 五月色网| 成人色情五月天婷婷丁香| 丁香五月天婷婷中文| 5月婷婷五月天| 激情六月综合| 五月婷婷综合网| 成人国产欧美大片一区| 七月激情六月婷婷综合在线播放| 婷婷综合网| 五月欧美色播| 五月婷在线播放| 五月天啪啪| 天天躁日日躁狠狠躁日日躁2022年5月9日 | 亚洲另类婷婷五月综合| 五月丁香六月激情视频| 日本三级日本三级99| 北条麻妃伊人 | 丁香伊人激情| 丁香五月成人婷婷| 欧美性生交XXXXX无码小说 | 999热成人在线综合网| 一区二区免费看| 99热这里有精品| http://www.com久久久精品一区| 91黄色五月天视频| 啪啪一区| 开心五月婷婷六月丁香| 超碰资源在线| 五月天婷婷色| www.久久99精品| 99热综合| 久久这里有精品| 久久久GOGO无码啪啪艺术| 久久99久久久久久久噜噜| 国产古装妇女野外A片| 激情AV中文| 婷婷丁香久久五月综合| 91色综合网| 久草丁香婷婷1024| 激情久久四色| 欧美超级视频97| 久久ri精品| 五月色综合网欧美网| 五月丁香六月婷婷网| 少妇高潮呻吟A片免费看软件| 久久精品系列| 97色色在线视频| 久久婷色| 成人视屏在线观看| 看片视频在线免费日产在线看| 极品人妻VIDEOSSS人妻| 色五月综合网| ww久久| 色护士综合| 国产精品-91JQ就要激情网91JQ6.91JQ27.CASA:16888 | 欧美在线视频99| 99色在线观看视频| 国产精品99久久久久久久女警| 中文字幕av在线播放| va亚洲中文在线| 天堂成人A片永久免费网站 | 丁香六月五月天| 欧美日本韩国亚洲| 丁香久久AV| 色婷婷www| 91男人资源站| 色婷婷色五月综合| 中文字幕乱码亚洲精品一区| 人人爱干人人爱草| 色色日本| 久久激情网| 亚洲综合无码| 三日本无码| 婷婷六月天激情影院| 99视频内射三四| 性爱AV天堂| 日本狠狠干| 天堂亚洲 在线| 99热在线成人网站| 中文字幕精品推荐免费在线观| site:wpjngj.com| 五月开心久久| 色婷婷中文字母五月丁香| 97天堂| 玖玖爱伊人| 丁香五月欧美激情| 91热久久| 五月激情综合网| 丁香六月婷婷久久综合八月| 色吧五月| 丁香五月婷婷色综合基地| 久操大香蕉| 六月丁香啪啪啪| 色婷五月| 少妇丁香婷婷 | 丰满熟女人妻一区二区三| 欧在线一区| 五月丁香婷婷AV| 超碰色女| 狠狠干五月天| 色香五月天| 就去色色五月丁香婷婷久久久| 婷婷深爱五月丁香| 超碰在线人人| 99在线精品免费视频| 五月花婷婷丁香| 综合网狠狠| www.久久99| 丁香五月综合福利视频导航| 3p九色在线| 直接看的AV| 五月天伊人综合| 五月婷丁香| 日韩抽插操逼| 五月丁香六月停停停| 色播婷婷五月天| 最新日韩久热免费视频看看| 婷婷色网站| 婷婷久久婷婷色五月| 国产精品久久久久久久久久| 婷婷开心激情五月激情网| www.久久9| 一起草AV| 久久人妻人人槡| 九月综合| 无码人妻少妇色欲AV一区二区| 婷婷五月天偷拍| 91超碰在线观看| 五月网站| 91超碰在线观看| 涩涩婷婷五月| 丁香色五月 97干| 大香蕉伊人丁香五月| 久综合| 人人看人人草人人摸| 9福利性视频欧美| 成人美女网| 91要啪| 99精品在| 99色婷婷视频| 97国产精品女人碰碰| 婷婷久久大香蕉| 欧美这里只有精品| 欧美噜一噜| 无码人妻电影| 日韩啪图| 日本人妻伦在线中文字幕| 影音先锋四区| AV五月婷婷露脸| 欧美成人无码高清一区二区三区| 97干在线观看| 99ri网站在线观看| 五月丁香色婷婷| 丁香婷婷色| 五月天久久网站| 激情婷婷五月天伊人在线观看| 亚洲免费观看高清完整版AV线| 人妻丰满精品一区二区A片| 日本系列_4页_777FP| wwwC0maV五月花| 婷婷五六月丁香| 97操碰视频| 色爱综合五月| 99只有精品9| 狠狠操天天干| 另类图片色五月| 第五色婷婷| 色婷婷亚洲在线| 五月婷婷与六月丁香图片激情| 色情婷婷。| 一级七香蕉| 99ri网站在线观看| 人妻丰满精品一区二区A片| 九九久久99| 99色在线观看视频| 五月婷婷丁香俺日污视频| 天天透天天摸天天舔| 97五月天婷婷午夜| 日日骑夜夜撸| 激情视频网址| 91人人爽狠狠狠| 日韩精品一区二区亚洲AV观看| 丁香五月成人自拍| 婷婷黄色网| 丁香五月婷婷av影院| 国产小精品| 婷婷丁香成人| 五月综合久久| 这里只有精彩视频| 亚洲精品婷婷| 久热这里只有| 人人摸人人| 日本va欧美va国产激情| 色色网站| 久久婷婷视频| 亚洲五月婷婷| 五月色综合| 丁香五月av| 成人片黄网站色大片免费毛片| 99九九精品| 五月婷婷大香蕉| 婷婷五月天网| 96精品成人无码A片观看金桔| 五月丁香| 99热在线观看| 欧美性爱专区| 色婷婷综合在线| 色噜久| 在线观看996精品| 91婷婷伊人牛牛| 26UUU欧美激情一区二区| xx久久| 超碰免费人人| 六月激情婷婷色| 亚洲一区先锋影音| 婷婷五月六月丁香综合| 中文乱子伦视频| 色色色综合网| 99热超碰在线| 人人摸人人干| 日本综合九九| 在线看黄色| 无码啪啪| 日日噜噜久久婷婷五月天 | 风流少妇A片一区二区蜜桃 | 日本综合久久| 中文字幕日本最新乱码视频| 色情成人五月天| 91疯狂操操操操| 91精品久久久久久77777| 玖月婷婷爱丁香| 六月婷婷网站| 深爱五月婷婷| 九九热免费| 大陆极品少妇内射AAAAAA| 婷婷丁香大香蕉| 欧美日韩国产伦精品日韩人妻一| av大香蕉| 思思精品久久艹| 第四色五月天| 丁香成人五月天| W色综合| 欧美色色色色色色| 婷色人人狠| 久久性爰视频这里只有精品| 色色五月天婷婷丁香| 九九色色| 亚洲区1| 九九人人操| 婷婷五月激情在线| 超碰色综合| AA片在线观看视频在线播放| 丁香六月欧美| 色色热99| 激情综合色婷婷六月天| 思思久久精品| AV大片在线观看| 97精品综合| 丁香六月婷婷姐网| 香蕉久久国产AV一区二区| 天天日天天久久青青| 久久最新色| 伊人超碰| 91九色视频| 色五月天 丁香| 日本九九九九| 六月婷婷在线| 九九热精品视频在线观看| 久久婷婷色综合老司机| 玖月婷婷爱丁香| 婷婷爱五月天| 欧洲电影在线观看免费版英语版| 任我鲁这里有精品视频| site:publishdd.com| 婷婷精品在线| 色婷婷人人| 九热在线这里有精品6| 久久人人妻| 日日鲁鲁鲁夜夜爽爽狠狠视频97| av在线激情| 91精品国产综合久久密臀| av九九| 激情五月婷婷啪啪| 丁香五月综合在线播放 | 99视频精品全部免费看| 99热99热在线| 亚洲无AV在线中文字幕| 99人人干| 五月天激情国产综合婷婷婷| 琪琪色网在线| 韩国情人在线电视剧免费观看高清版全集 | 在线一起草av| 三十路磁力链接| 五月婷婷香| 亚洲婷婷久久综合| 婷婷六月久久综合导航| 男女啪啪做爰高潮无遮挡| 久久资源网五月婷| 五月天成人综合| 97人人干视频| 五月天小说激情| 激情五月天 婷婷| 26uuu丁香婷婷五月| 国产精品香蕉| 东京热五月婷婷| 色亚洲中文| 色综合天天综合成人网| 久久精品9| 噜噜噜久久| 婷婷综合干| 性生活久久人妻| 国精产品一区一区三区免费视频| 五月天激情播播网| 丁香婷婷久久 | 五月天激情电影| 五月色丁香| 九月激情综合| 婷婷五月天网址| 这里只有精彩视频| 六月婷婷最新网址| 五月开心深爱激情网| 九九九九热99超碰| 久8色色| 激情涩播| 五月综合婷婷久久在线| 婷婷丁香社区| 五月亭亭六月激情| 国产精品久久久久久久久久免费 | 97黑人精品区| 天天干天天做| 日本99色| www.久久爱.com| 五月丁香综合激情网| 天天肏天天肏天天肏| 激情五月,激情综合网| 99久精品视频| 啪啪操超碰| 九九热自拍| 9久精品视频| www夜夜操| WWW.五月天9999| 被强行糟蹋的女人A片| 色婷婷伦理| 婷婷无五月无码视频| 日日夜夜小色哥| 日本三日本三级少妇三级66| 99色网站| 色婷婷免费观看| 亚洲国产99| 高清激情av在线观看| 欧洲电影在线观看免费版英语版| 精品九九视频| 国产高潮白浆一区二区| 色婷婷五月天激情在线观看| 九月av| 五月丁香影院| ...婷婷国产成人亚洲日韩| 一本色道久久88加勒比| 99热这里只有精品国产首页| 五月丁香婷婷啪啪综合| 亚洲国产成人在线| wuyuedingxiang99| 婷婷五月天天| 婷婷五月综合亚洲| 婷婷五月激情图片| 这里只有精品久久| 5月丁香六月婷婷| 五月丁香人妻| 久热这里只有精品99re | 另类图片五月天| 精品皮股午夜AV| 2022人人操人人看| 99这里只有| 天天狠狠色噜噜| 亚洲人妻电影| 99色综合| 婷婷五月六月激情| 97干在线观看视频| 99热在线观看| www.99视频| 无码色色色色色| 桃色五月婷婷| 九色七七| 天天舔天天摸天天射| 久久香视频| 五月丁香色情| 五月婷婷之六月丁香| 97婷婷狠狠久久综合9色| 五月色婷婷亚洲 | 亚洲国产成人综合| 日韩成人综合网| 丁香六月亭亭久久综合| 日本WWW九九九| 久久97| 影音先锋91| 婷婷久久五月天| 亚洲丁香五月综合| 97五月久久丁香婷婷| 2020日日干| 婷婷亚洲五月色综合| 大香蕉五月婷婷| 日本一级黄色电影| 琪琪秋霞| 日本久久性| 五月天婷婷丁香成人网| 99热在线中文字幕| 99热99极品观看| 99操无码视频观看| 玖玖婷婷五月天| 丁香婷婷五月六月天| 色五月婷婷7777| 9|无码久久久久久| 成 人 色 色| www.粉嫩av.com| 激情久久月| 亚洲精品白浆高清久久久久久| 激情99| 蜜乳A√| 丁香婷婷黄网站| 91主播在线| 精品无码久久久久久久久| 综合性爱网| 丁香综合网| 婷婷五月天改成什么了| 91肏| 69人人操人人爽| 成人做爰A片免费看网站找不到了| 色久女| VfJxEwPH| 51精品国自产在线| 啪啪激情网| 夜夜夜夜夜骑撸| 99久久综合网| 欧美激情五月天婷婷| 婷婷激情四射网| 久久日本wwww色| 欧类av怡春院| 亚洲久久激情| 丁香五月日韩| 色色AV色色色东莞| 日本AAAAAAAAAAAAAA片| 色婷婷五月天激情在线播放| 久操婷婷| 偷拍91九色| 黄色99热| 91九色 熟| 丁香五月婷婷综合啪啪| 五月丁香狠狠爱| 五月婷婷中文| 99ri在线观看视频| 91精品久久久久久久久| 五月丁香香蕉| 五月天综合激情网| 嫩草AV久久伊人妇女超级a| 丁香五月另类小说在线阅读| 久久五月天色婷婷| 国产成人网站在线观看| 亚洲天堂啪啪| 天天肏高清在线| 9久久精品视频| 狠狠色综合网站久久久久| 久久性都花花世界成人免费视频| www.色五月| 北京熟妇搡BBBB搡BBBB| 久久激情网| 伊人五月天在线| 丁香久久| 久久这里都是精品| 色丁香五月| 久久伊人大香蕉| 大香蕉五月天| 日本三级中国三级99人妇网站| 99在线精品视频| 久久精品五月天| 天天肏在线观看| 成人在线视频网| 色九九综合| 人人爱国产| 婷婷丁香五月综合| 狠狠爱综合网| 国产AV一区二区三区日韩| 国产精品美女久久久久AV超清| 伊人在线视频| 日碰日| 壅壅儕家a| 97人妻碰碰碰久久久久-最近国语高清| 俺去婷婷 丁香| 男人視頻站| 99热一区| 亚洲亚洲人成综合网络| 免费在线观看AV网站| 国产精品成av人在线视午夜片| 久草x色在线观看99| 91美女啪啪| 九九综舍久久| 久久xxxx| 久热这里这里有精品| 五月婷婷在线网站| 五月天天天色| www,色婷婷| 激情五月天影院| 亚洲亚洲人成综合网络| 超极99精品| 日韩免费99| 99色在线| 五月丁香六月激情狠狠| 亚洲aV写真天天综合网久久| 婷婷在线激情| 丁香五月五月婷婷| 国产免费性爱| 久草九九| 亚州精品色情无码A片| 激情小说五月天中文字幕| 99在线精品视频免费观看20| 九九色图| 欧美在线干| 好叼操在线观看| 殴美日韩成人| 伊人春天av| 天天成人丁香美女AV| 九九热精品视频在线观看| 欧美日韩aaa| 青青草原亚洲久| 亭亭色网| 啪啪五月天啪啪| 五月精品| 婷婷五月在线视频| Www.Av网9| 婷婷五月亚洲综合| 甈你aaaaa| 色情丁香五月婷婷精品| 人与禽A片啪啪| 98永久精品| 色亚洲婷婷| 五月天伊人久久久久| 九九这里只有精品| 一婬一伦一区二区三区| 五月天五月色婷婷综合| 婷婷五月图片小说视频| 亚洲欧美成人在线| 久久大香蕉丁香| 色综合久久综合中文综合网| 激情婷婷五月天伊人在线观看| 激情五月婷婷综合| 日本片日本片祼观看网站在线看中文版网页在线看 | 亚洲综合在线视频| 欧美激情-区二区三区| 天天色色天天| 免费日本aⅴ中文字幕| 99精品无码视频| 天天狠狠六月婷丁香影院| 九月丁香| 久久香蕉丁香| 日日肏天天操| 婷婷五月天AV| 日本少妇AA一级特黄大片| 亚洲第一色网站| 婷婷五月天AV在线| 五月丁香婷婷久久| 久久天堂婷婷五月| VA国产在线综合网站| 91色在线 | 日韩| 在线成人va| www狠狠| 五月婷婷丁香瑟瑟视频| 国产成人+综合亚洲+天堂| 日本精品干| 婷婷射婷婷舔| 欧美电影在线播放| 丁香大香蕉| 国产色色视频| 婷婷5月久久综合网站| 97亚洲色 torrent magnet| 亚洲视频色婷婷| 教师性爱毛片| 怡红院院在线导航网| 亚洲色综合| 婷丁香五月天| 九九99一区| 色狠狠色噜噜AV天堂五区| 色愛综合网| www.色五月.com| 九月色婷婷综合| 六月丁香色婷婷| 北条麻妃九九九国产精品视频| 国产亚洲色婷婷99精品| 色综合久久44| 99精品国产在热久久婷婷| 五月天婷婷丁香社区| 国外亚洲成AV人片在线观看| 久久视这里只有精品| 成人AV免费观看| 丁香五月婷婷天堂大香蕉| 狠狠色噜噜狠狠| 一级黄在线| 欧美天天干五月丁香| 日日夜夜天天| 亚洲色综合| 五月婷婷av| 六月丁香综合| 99热综合色图| 99热碰碰| 色婷婷综合影院| 久色88| 99视频在线精品| 东京热人妻一区二区三区在线| 国产另类综合| 久久免费少妇高潮99精品| 开心五月综合激情综合五月| 裸体做A爰片毛片A片免费| 精品99久久久久成人网站免费| 丁香五月天电影| 久久精品爱爱| 婷婷操逼| 久热这里只有精品在线观看| 超碰人人色| 99热6这里只有精品6| 欧美成人精品A片免费一区99| 五月丁香色婷婷伊人| 五月激情影院| 天天婷婷操| 四川女人毛多水多A片| 亚洲另类婷婷五月综合| 成人无码精品1区2区3区免费看| 97色伦另类图片小说视频| 色网五月婷婷| 五月婷久久在线| 影音先锋91视频| 网站免费一站二站| 激情九月天天天天婷婷| 亚洲在线操| 就是色婷婷五月亚洲色| 五月婷婷六月天| 精品综合久久久久久五月天| av高清无码| 激情六月一二| 丁香五月大香蕉AV| 色综合区| 久久婷婷成人视频| 狠狠CAO日日穞夜夜穞AV| 婷婷五月丁香六月天亚洲综合| 97sese婷婷| 久久 婷婷 五月天| 天天人人综合| 97久久人人人干| 九九久久网| 9久久久久| 色色激情| 五月婷婷精品无在线| 丁香婷婷午夜| 成人在线精品| 婷婷五月天777| 天天肏视奸| 超碰人人91| 亚洲美女婷婷五月天| 五月天丁香婷婷视频网址| 欧美丁香婷婷五月天| 婷婷丁香九月| 97色色网| 五月婷婷六月丁香综合在线| 日本啪啪网| 疯狂做受XXXX高潮A片| 可以观看的AV| 九九99免费理论| 91九色最新视频| 欧美狠狠色| 色色精品色| 伊人免费视频9| 9999三级片| 激情综合婷婷| 99热99| 九九激情网| 五月六月婷| 五月天无码| 人人操人人妻| 丁香六月啪| 天天成人综合视频| 站长推荐无码播放| 欧美成人一区二区三区在线视频 | 日韩999| 岛国AAAV| 五月天婷婷色色| 99愛国产| 婷婷五月成人色综合| 91亚洲免费片|