欧美成人午夜精品久久久,国产?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激情五月综合网| 免费看欧美成人A片无码| 五月天婷婷色小说| 伊人碰碰婷婷| 99亚洲精品| 丁香五月综合在线| 噜噜色五月| 中文无码婷婷| 婷婷五月激情欧美大胆视频| 中文字幕丰满人妻无码专区| 国产毛片精品一区二区色欲黄A片| 婷婷五月天成人基地| 91麻豆国产三级精品福利在线观看| 五月婷婷影视| 激情婷婷在线中文字幕| av免费在线看不卡无毒| 欧洲亚洲免费视频9| 日日夜夜狠狠婷婷色| 黃色三级三级三级三级 qixing300.shrkbk.com www.jinbozs.com tianmiaosw.com | 六月久久狠狠| AV堂狠狠干| 久久97久久99久久综合欧美| 大香蕉啪啪| 2023天天日夜夜爽| 五月伊人网| 风流少妇A片一区二区蜜桃| 六月综合在线| 天天日夜夜B久久| 丁香五月天堂亚洲社区| 91超碰人人操| 99色视频| 婷婷娱乐丁香综合网| 99九九热视频| 一区二区三区四日本| 五月丁香六月婷婷网| 日本色色色| 搡BBBB搡BBB搡五十| 激情欧美五月丁香| 天天插天天很| 性一交一乱一交A片久久四色| 日本女色人人| 亚洲综合另类| 久久婷婷久久| 伊人玖玖网| 玖玖资源在线视频| 婷婷欧美| 99思思热只有在这里看| 综合激情网五月激情| 婷婷97C| 婷婷久久五月天| 中国激情网| 久久久思思热| 久久久.COM| 色婷婷激情Av久久久| 色欲天天综合网| 天天插天天| 激情九月婷婷| 五月婷婷婷| 超喷97免费在线视频| 久久久久久97| 丁香五月天激情视频| 亚洲日韩人妻操逼| 五月婷在线| 色五月色五天色情网址| 五月综合激情久久| 日日爽夜夜爽| 丁香五月天电影| 日本色五月| 久热最新视频| 99热日韩这里只有精品| 欧美久热| 国产精品日日躁夜夜躁| 99偷拍视频在线日本| 国产99久久久国产精品免费看| 五月天婷婷成人网| 五月婷婷天| 精品无码人妻一区| XXXX岛国| 91制片厂久久久国产电影| 五月婷婷综合激情网| 九九热思思| 久久小视频免费| Www99热| 九九草草逼| 99久久9| 99色干| 婷婷色五月色| 婷婷日日夜夜| 婷婷五月深爱五月| 五月天色网站| 91人妻视频| 国产成人VA| 激情五月天色色网| 丁香婷最新动态| 久热黄色| 99ri在线| 色综合夜夜| 91丨九色丨高潮丰满日本| 国产一区18| 色碰97| www.金莲av| 婷婷色在线| 五月天色综合| 五月丁香999| 五月天婷婷伊人| 狠狠做深爱婷婷久久综合一区| 五月天婷婷永久免费视频| 色五月av伊人| 亚洲瑟瑟精品在线| 婷婷开心青青草| 日韩 欧美 国产 一区 二区| 日本波多野结衣视频| 免费观看全黄做爰的视频| 青草激情综合| 色婷婷综合网| 天堂成人A片永久免费网站 | AV大香蕉| 婷婷开心激情| www久久久| 五月天.com| 丁香五月婷婷啪| 婷婷五月,偷窥偷拍网| 中出内射的人妻视频| 日韩乱玛久久| 小香蕉av| 五月丁香六月婷婷综合网| 在线观看婷婷5月| 99热成人| 精品人妻伦| 综合网啪| 色婷婷综合成人| 久色五月| 天堂网亚洲色图| 99re久热只有精品6在线直播| 噜噜噜久久| 91在线观看九区| ,99视频久久| 超碰97干| av电影在线播放| 丁香五月大片| 天天干天干| www.色色com| 丁香五月综合久久八| 成 人 色 色| 99热精品在线在线| 狠狠狠狠狠狠狠狠草| 欧美久久婷婷| 色播五月婷婷| 激情99| 色碰干| 激情五月久久| 五月色丁香| 久久久这里有精品| 91操网| 中文字幕在线播放视频| 天天噜天天爱| 中文字幕日本最新乱码视频| 色和综合网| 4399精品一区二区| av九九| renrencaoni| 国产精品色色色色| 丁香五月先锋| 无码人妻少妇色欲AV一区二区| 99在线视频观看| 色五月色情| 九九精品热播| 色婷婷丁香五月丁香| 婷婷久久草| 亚洲成人AV在线播放| 婷婷97| 色五月激情五月| 亚洲AV久久久久久久久久久久久久久久 | 中文字幕丰满孑伦无码专区| 97色干| 丁香五月综合| 99热在线播放精品| 婷婷五月色情天| www.25五月婷婷| 思思热再线视频| 丁香五月天色婷婷| 九九成人| 在线免费观看激情视频| a网站免费观看| 久久这里只有精品网| 亚洲热久久| 色婷操逼| 婷婷在线五月综合| 久操无码| 色综色五月天婷婷| 久久婷婷色| 丰满少妇乱A片无码| 97碰碰碰| 激情婷婷丁香色情五月天| 天天干天天射色综合| 91人人操.COM| 亚洲日韩久久婷婷伊人| 99色色网| 99热中文字幕久久| 99热都是精品| 日韩无码乱轮| 婷婷五月天综合蜜桃| 五月天婷婷视频小说| 99操逼| 91日本在线免费| 久久婷婷伊人| 人人摸人人澡人人| 中文字幕日本最新乱码视频 | 色婷婷AV久久久久久久| 五月婷婷开心亚州在线| 久久综合五月| 大胆伊人久久| 天天做天天要天天爽| 这里有精品| 日本人妻伦在线中文字幕| 97AV人人插人人操| 丁香五月激情婷婷激情| 91久久久久久| 成人在线高清| 美女激情婷婷| 丁香六月欧美| ss99热| 北条麻妃九九九国产精品视频| 4399亚洲视频| 色欲久久久久久综合网综合网| 五月丁香婷婷综合激情基地| 精品一区二区三区四区五区六区介绍| 色10月婷婷视频| 久久机热探花| 91久久精品视频| 4399无码视频| 欧美性生交XXXXX无码小说| 欧美日韩成人在线网| 另类激情五月| 久久丁香五月婷婷| 涩涩五| 91日韩在线| 99热 在线播放| 国产偷人爽久久久久久老妇APP| 99综合视频| 九九热在线观看视频| 色五月婷婷激情五月| 成人av免费观看| 五月婷婷六月综合| 中文字幕,综合,91| 伦乱人妻| 9色免费网| 中文AV网站| 成人综合网站| 狠狠操狠狠色| 91精品久| 久久综合首页| 色婷婷综合网站| 五月天天综合| 99色热| 99热久草| 99热欧美在线观看| 丁香五月大片| 五月婷婷乱| 日韩激情人伦人| 激情播丁香| 九九婷婷五月天影视| 好好干av| 狠狠五月激情丁香六月| 狠狠插日日干撸| 五月婷婷色| 久久五月天色婷婷| 人妻久久久久久久 | 丁香婷婷五月综合欧美另类| 激情五月丁香激情综合网| 丁香五月欧美| 只有精品在线观看| www.99色| 综合婷婷| 久久九九色| 91色五月| 中文字幕在线免费观看视频| 9色在线视频| 激情 婷婷| 99久久亚洲国产| 亚洲小视频| 秋霞AV吧| 色5月婷婷| 成人.在线日韩| 亚洲精品乱码久久久久99| 久久一二三视频| 天天干天天插| 婷婷六月丁香1| 五月天久久久| 天干天天干天天天天天| 99热这里有精品| 日本色噜| 欧美私人家庭影院| 激情五月天色婷婷综合| 热99.com婷婷| 99热97| 综合网色综合| 婷婷六月色开 | 婷婷的五月天另类视频| 26uuu精品一区二区| 五月婷婷激情| WwW色婷婷| 五月天丁香网站| 九热电影av| 婷婷五月成人| 色色丁香婷婷综合| 91操黄| 情色五月天网站| 天堂久久婷婷| 日韩成人电影av| 这里只有精品2| 伊人大香久久| 色色色色色色色色色色色色色97| 五月丁香亭亭操逼| 激情五月婷婷五月| 人人爱天天摸摸天天爱| 久久婷婷五月天丁香| 亚洲 六月 综合| 欧美激情-区二区三区| 欧美人妻一区二区| 天天综合网~91综合网| 思思精品视频| 影音先锋 婷婷| 五月激情四射网站| 婷婷在线视频| 无码激情AAAAA片-区区| 婷婷色情五月| 久久久99免费视频| 91碰碰| 激情婷婷另类| 五月伊人婷婷999| 亚洲在线综合| 婷婷六月婷婷| 99爱在线| 97色操| 9色在线| 狠狠色丁香| 天天操夜夜肏| 色老久久| 另类在线| 天天干com| 黑人无码一区| 操骚货在线| 欧洲日韩一区二区三区| 久久女人九九| 激情六月综合| 五月丁香六月婷婷婷婷| 99热这里有精品首页10| 激情第四色| 色五月丁香五月婷婷五月成人网| 色玖玖导航| 五月色网| 五月天激情亚洲| 久久艹99| 国产精品18久久久| 97超碰在线免费观看| 婷婷激情五月综合| 日韩不卡123| 99在线免费视频| 欧美噜噜噜草| 丁香婷婷六月| 婷婷大香蕉| 五月天色官网| 天天插天天插| 五月成人网站| 婷婷激情五月天激情在线| 五月婷婷综合在线亚洲视频| 五月婷婷激情性爱| 五月丁香色婷| 香蕉综合在线| 亚洲天堂色| 色婷婷狠| 婷婷五月花西瓜| caop在线视频| 婷婷六月成人| 国产午夜一区二区三区| 五月丁香六月婷婷综合| 久久九九视频网站| 免费看片操逼| 疯狂做受XXXX高潮A片动画| 激情五月丁香五月| 丁香婷婷丁香五月欧美人| 丁香六月亚洲| 五月天婷婷综合网| 五月婷婷丁香六月| 日日噜狠狠色综合久久| 97精品欧美91久久久久久久| 精品五月花| www.99视频| 色五婷婷| 熟女重口味αV| 国产精品人妻在线网址| 成人AV在线中文版| 久久XX| 九九无码视屏| 青青草a在线| 婷婷中文字幕在线| 午夜天天精品视频| 婷婷五月情| 激情婷婷五月社区| 久久五月天激情视频| 男人的天堂五月丁香| 日韩性爱AV| www婷婷| 五月激情久久| 《》【无码】想被搞到爽AV应募而来的超M素人 西纯子 10musume-011723-01 | 色五月婷婷在线| 99热这里有精品24| 亚洲色涩视频| www.色色五月天.com| 色色五月天婷婷丁香| 2025天天爽天天摸| 99热九九这里只有精品| 综合色吧| 亚洲成人网址在线观看| 99无码视频| 五月婷婷偷拍| 天天狠狠干| 亚洲一色色色色色色色色| 色婷婷69| 久久久久久久久久婷婷| 五月丁小婷婷激情四射| 色情综合网| 91久久精品无码一区二区三区| 操比激情五月| 综合色色色| 五月婷婷免费在线观看| 99久久国产成人精品| 欧美99视频| 91国产精品视频播放| 五月激情小说| 丁香五月天堂| av大香蕉| 九九色热| 91人人操.COM| 操骚货在线| 战争与艾拉电影免费观看| 亚洲色爽| 色婷婷91激情小说| 性爱AV天堂| 久大香蕉| 激情五月综合第一页| 久九男女天堂| 国产精品99久久久久久久女警| 五月亭亭开心网| 丁香五月婷婷亚洲综合精品| 婷婷五月花| 五月天激情小说欧美激情| 伊人狠狠操| 色五月婷婷、老熟女| 无码se| www.jiujiujiu| 日本123区日韩欧美不卡在线看| 亚洲美女裸体被操在线观看| 碰超亚洲| 黄色激情网站在线观看| 成人久碰| 五月丁香 狠狠爱| 日本eVa一区=区视频| 熟女少妇内射日韩亚洲| 国产熟妇乱子伦hd| 国产黄大片在线观看画质优化| 色999五月色| 五月婷在线观看| 久久三级视频| 伊人五月综合网| 五月激情六月宗合| 欧美色婷婷| 人妻操逼视频| 亚洲人人操| 青青青在线视频国产| 99网| 草草女人亚洲| 婷婷综合久久综合| 99在线视频女女视频| 一起草av在线观看| 精品成人久久久久久久_一二三四视| 丁香五婷婷| www.婷婷,com| 超碰操网| 九九热在线亚洲免费视频| 亚洲激情亚洲激情| 99激| www开心激情网| 五月丁香花开综合网| 夜丁香五月婷婷| 四月婷婷丁香| 国产精品色色| 欧美色色色色色| 日韩AV大全| 狠狠干无码| 激情五月综合婷婷| 无码免费人妻A片AAA毛片西瓜| 搡BBBB搡BBB搡五十| 国产av一区二区三区| tingtingcaobi| 婷婷五月综合中文字幕| 五月丁香成年黄色| 国产avapp 网| 立川无码av| 五月亭亭激情综合| www.人人操人人看人人想人人摸 人人人人操,COM| 99 频99热国里只有精品| 五月婷婷久久综合| 天堂AV在线看| 精品网站:999WWW| 丁香婷婷六月天| 日日操日日撸| 激情婷婷丁香五月| 日韩五月婷婷| 日韩人妻无码专区| 日日夜夜青青草| 九色色| 这里只有精品1| 开心激情五月天网| 日韩久久色| www激情| 亚洲亚洲人成综合网络| 丁香伊人五月色婷婷五十路| 丁香五月欧美激情| 亚洲第一色网站| 狠狠色精品综合| 五月天综合在线观看视频| 五月丁香婷中文| 99久久婷婷国产综合精品草原| 超碰在线caop| 99色| 77799热| 狠狠插日日干撸| 91久久电影| 天天射影院| 97啪在线观看视频| 五月婷婷影| 七七九九色色| 色五月婷婷一二| 丁香色婷婷| 色五月丁香五| 99热这里都是精品| 久热这里精品免费| 久青操| 亚洲亚洲人成综合网络| 久久天堂女人| 色丁香五月婷婷婷| 色婷婷五月天视频在线| 五月天亭亭俺也| 夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂亚洲亚洲亚洲亚洲亚洲亚洲亚洲亚洲色 | 丁香五月av| 色婷婷基地| 91九色 熟| 国产精品久久..4399| 激情五月亚洲综合网| 久久免费精彩视频| 国产黄色在线观看| 91色在线/日韩| 五月婷婷九| 久久久com| 色婷婷影视99| 99成人网站| 噜一噜在线| 国外亚洲成AV人片在线观看| 欧美综合123区| 丁香六月天色婷婷| 日本久久99| 99热在线极品极品| 人人亚洲| 99爱视频| 婷婷色五月综合| 操碰99| 思思久久青草热| 91色综合| 狠狠色噜噜色狠狠狠综合色 | 中文字幕日产A片在线看| 五月丁香婷婷啪啪网| 久久这有这里精品| 亚洲在线操| 综合在线观看99| 国产欧美日韩性爱| 丁香五月天狠狠| 亚洲欧洲中文日韩久久AV乱码| 久9无码视频| 五月婷婷丁香六月在线| 色综合伊人网| 欧美色图天堂网色| 天天摸人人摸| 成人无码精品1区2区3区免费看| 色五月婷婷操逼| 欧美激情-区二区三区| 色五月丁香五月| 91美女啪啪| 在线五月色播| 99久久激情视频| 婷婷五月18永久免费网站| 爱草视频在线| 热久久这里只有精品| 五月婷婷|欧美| 婷婷五月天BBw| 欧洲第一无人区观看| 成人欧美日韩| 激情五月天在线免费美女视频| 精品久久穴| 免费视频舔| 人人摸人人澡人人| 色色综合热| 国产精品色色色色| 激情五月综合网| 色五月天丁香| 狠狠色五月| 丁香五月激情啪啪啪| 99视频精品8| 99碰碰| 9久视频| 成人在线日韩欧美| 亚州婷婷五月激情综合| 五月草影视| 风流少妇A片一区二区蜜桃| 五月丁香六月久久| 9久久精品| 婷婷婷久久久| 亚洲人人操| 色yeye欧美| 开心五月婷| 欧美槡BBBB槡BBB少妇| 婷婷激情伍月网| 激情四射五月天| 9久热在线视频精品| av人人干| 丁香五月激情欧美| 天天干天天色综合| 日韩av手机在线观看| 五月天播播综合| 五月婷在线| 熟女色专区| 亚洲激情AV| 99视频久久| 激情五月综合网最新| 欧美久久网| 亚洲成人中心| 日本色图综合| 色99视频| 亚洲精品99| 久九色| 色色五月丁香婷婷| 91chinese在线| 91九色国产| 婷婷色五月激情| 一起草无码| 色五月五月天色婷婷色五月| 激情綜合網址| 亚韩在线视频| 五月天色色网站| 99色在线视频| 亚洲艹网| 中字幕视频在线永久在线观看免费| 婷婷色五月噜噜| 999影院成人在线影院| 九九色婷婷Av| 五月天亚洲色| 色九月国产| 婷婷激情六月综合| 91九色精品女同系列| 99天堂网| 99re这里只有精品国产99| 天天插天天插| 少妇人妻凹凸视频| 色色婷婷综合| 色婷婷久久综合久色综| 超碰在线免费| 色色婷| 开心五月深爱五月婷| 日噜噜色| 91久久九久久九久久九久久九久久| 999激情视频| 五月婷在线| 五月天婷婷午夜丁香| 亚洲成av人影院| 精品免费99| 日韩性爱无码| AV在线大香蕉| 婷婷久草| 成人亚洲精品久久久久| 久久久精品色色色| 婷婷色五月开心五月| 狠狠色婷婷7777久| 五月情四婷婷| 久久密臀婷婷| 991国产精选视频在线播放下载| 国产操碰| 欧美大片免费观看| 色婷婷狠狠18| 大香蕉精品视频| 中国丰满熟女A片免费观| 婷婷激情六月天视频| 久久婷婷草| 丁香五月性| 五月丁综合在线观看| 亚洲99一级无嗎特制在线| 九九色大香蕉| 六月激情婷婷色| 97成人操| 日本色99| 婷婷色五月天第7色| 五月色情精品| 婷婷的99视频网站| 五月丁香六月激情综合在线| 日91高清无玛| 色综合久久久久| 亚洲丁香五月| 婷婷五月天激情电影| 亚洲激情久久| 国产无套精品一区二区| 婷婷久久久| 伊久大香蕉| 99热精品观看| caopeng97日韩| 91人人操| 免费观看欧美成人AA片爱我多深| 婷婷五月天伊人| 丁香婷婷六月激情文学| 五月停视频天堂| 日本久热| 激情小说之五月| 99热免费精品| 玩熟女五十AV一二三区| 婷婷月综合| 丁香五月狠狠综合欧美| 色婷婷91| 亚洲精品无人区| 人妻aV在线| 综合色婷婷| 99色在线| 六月婷婷中文字幕| 五月天免费色| 婷婷丁香五月91| 欧美色综合天天久久综合精品| 天天干天天插| 天天噪夜夜爽| 99热这里只有精品1025| 超碰操日| 婷婷五月婷婷| 99热在线播放| 天天天天天操| 丁香五月网址| 激情五月最新网址| 色五月激情网| 99性色| 丁香婷婷综合五月天| 超碰人人99| www.9操| 狠狠色婷婷7777久| 日屌日日操日日色| 色99亚洲| 97人人操人人| 婷婷狠狠爱| 六月丁香啪啪| 人妻激情在线| 亚洲成人va| 婷婷色激情网| 婷婷丁香花五月天| 夜色.cnm| 午夜天堂一区人妻| 久久激情五月| 久久久久人妻精品| 丁香五月天欧美在线| 91丨九色丨大屁股| 日韩无码乱轮| 婷婷香草网| 深爱激情五月天| 亚洲免费观看高清完整版AV线| 五月婷婷丁香五月婷婷| 99国产er热视频| 丁香五月婷婷激情尤物| 超碰色碰碰| 色五月婷婷在线| 五月色网| 亚洲视频操| 激情综合色播| Va另类视频| 天天爽天天爽天天爽天天爽天天爽| 午夜丁香综合婷婷| 国产女人十八水真多1| 日本少妇裸体做爰高潮片 | 久久狠狠干| 狠狠狠狠狠狠狠狠| 久久99成人性爱高清视频| 欧洲激情五月天婷婷| 99色在线观看| 综合久久久| 欧美日韩五月婷婷| 五月停亭久久电影| 三级av在线| 亚洲五月天激情| av大香蕉| 色五月超碰| 五月丁香亭亭| 久久人妻乱| 五月天婷婷黄色| 6080av| 免费的日逼视频| 99re热精品在线视频| 色色爽爽天天| 99爽视频| 五月婷婷婷综合网| 人妻中文字幕网| 人人操人| 97超碰色| 色爱爱综合网| 爱超碰性| 色五月天婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷 | 狠狠五月天| 色五月激情婷婷| 色综合激情| 最新av在线观看| 久久久免费精彩视频| 婷婷色正月| 婷婷色狠狠| 五月天激情AV| 五月天婷婷在线播放免费| 久久99成人性爱高清视频| 六月丁香婷婷网| 婷色成人| 久久五月丁香综合17C| 人妻videos人妻高清| 久一这里有精品国产| 色波激情五月天| 久鲁鲁色网| tingtingjiqingwuyue| 婷婷丁香视频在线观看免费| 亚洲va日| 99热久久这里只有精品| 天天色天天爱天天舔| 综合激情五月综合激情五月激情1| 婷婷伊人无码| 色色综合无码| 丁香六月激情综合网| 97干婷婷五月天| 激情 婷婷 插| 欧美啄木乌丝袜人妻系列| 26uuu国产激情视频| 99热在线观看免费| 五月天激情无码| 99综合| 五月天操逼网| caop在线视频| 99视频精品在线| 激情五月综合婷婷| 99国产精品白浆在线观看免费| 啪啪啪大香蕉| 亚洲V国产V欧美V久久久久久| 久久久国产精品黄毛片| 色婷婷狠狠久久综合五月| 97在线/日本| 影视av久久久噜噜噜噜噜三级| 欧洲毛片基地c区| 丁香婷婷人妻| 管管補管管紱| 99这里只有精品99| 色爽九九| 久久九九免费视频| 天天色情站| 成人做爰高潮A片免费视频| 99热超碰人| 婷婷九月丁香天堂丁香天堂| 99ri在线| 丁香五月婷婷成人色区| 丁香六月天之亚州热女| 五月婷婷丁香五月婷婷丁香| 久久久WWW| 天天操夜夜操| 狠狠色综合五月人人| 色婷婷久久7777| 啪啪婷婷五月天激情| 色爱综合网| 激情五月婷婷伊人| 26UUU欧美| 九九99九九99九九99视频网| 色播五月天激情| 亚洲色无码A片一区二区麻豆| 中文字幕欧美精品久久| 99福利导航| 亚洲激情图文小说| 六月丁香婷婷五月| 91九色熟女| 99精品热| 婷婷九月丁香中文| 久久久精品AV| 久久99最新| 五月婷婷六月丁香激情| 无码啪啪| 91九色最新视频| 五月亭亭欧美女人| 欧美va精品va老师va| 亭亭五月天黑人2014| www.99成人视频| 欧美日综合| 人妻日日日| 色哟哟性爱av| 99亚洲综合| 五月天久久网站| 大香蕉手机视频| 婷婷综合性爱网| 久久久久网站| 五月婷无码| 99热色精品| 激情综合九月| 91黄色五月天视频| 色99在线视频| 激情五月天色爱| 超碰日日操| 亚洲爆乳无码精品AAA片蜜桃| 美女91一起草| 99热国产在| 激情五月综合婷婷| 香蕉久久国产AV一区二区| 国产精品成av人在线视午夜片| av网址在线| 五月激情黄色小说| 久久9精品| 婷婷五月丁香综合网| 久久六月天| 日日撸日日操| 激情四射五月天| 五月精品99综合| 久操热| 天天色天天爱天天爽| 五月天综合在线| 久久婷婷网址| 丁香 婷婷 激情 综合 五月| www.99视频| 开心五月天激情网| 色婷婷超碰| 国际国外精品欧洲南美洲专区无码不卡| 婷婷97碰碰| 成人AV在线中文版| 九热免费视频| 激情5月天天天| 婷婷色色网| 五月天婷婷丁香人人操91| 五月丁香六月婷婷,婷| 99热这里有精品| 人与禽A片啪啪| 中文激情网| 五月天婷婷在线观看| 欧美日韩99| 激情中文在线| 五月精品免费XXX| 五月婷婷开心网| 久久9999| 99热这里只有精品一区| 99久久婷婷国产综合| 亚洲黄3级片网站欧美| 五月婷婷干| 夜夜躁爽日日| 久九九热| 五月丁香六月欧美| 久久久久9| 狠狠五月激情丁香六月| 亚洲国产va| 天天爽天天| 久久99操| 欧美五月婷婷| 激情5月婷婷| 狠狠综合| 操日视频| 丁香花五月天社区| 69er小视频| 婷婷五月影院| 欧美大香蕉视频| 99国产视频网| 婷婷丁香综合网| 婷婷丁香六月五月天| 激情久久丁香| 在线不卡的视频| 9久热这里只有精品视频| 夜夜干天天操| 久久婷婷五月综合伊人| 色五月色五天免费视频| 一级内射毛片| 色色丁香五月婷婷| 玖玖婷婷五月天| 色色色综合色| 六月丁香五月婷婷| 激情综合另类| 婷婷五月伦理| 精品少妇人妻AV无码专区偷人| 色综久久AV| 五月婷婷中文字幕| 欧美精产国品一二三区| 久久久久久人妻| 超碰99成人在线| 午夜婷婷六月天| 丁香网五月天| 久热只有这里有精品| 狠狠做深爱婷婷久久综合一区| 九月综合| 亚洲五月婷婷| 日本一级大片| 五月婷婷婷婷网| 一本到不卡高清DVD| www激情网| 中文字幕成人| 777.色色| 五月婷丁香| 噜综合| 日本狠狠色| 青草青草久热这里只有精品| 色爱综合网| 日韩在线视频中文字幕| 色婷婷婷婷| 久久婷婷五月天蜜桃| 国产精品国产| 九九热99熟女| 天天做天天爱天天高潮| 一起肏在线视频| 99热免费在线| 极品另类| 少妇人妻人伦A片| 2015超碰| 五月丁香婷草| www.色色五月天.com| 五月天久久综合| 色婷婷狠| 噜噜五月天综合| 五月久久五月激情| 五月丁香激情综合| 99热这里只有在线播放| 亚洲成av人影院| 五月色丁香国产在线视频| 亚洲视频一区| 丁香五月综合网亚洲综合欧美狠狠| 久操乱| 丁香五月区| 97人人操人| 婷婷99狠狠| 丁香五月最新地址| 综合网啪| 99热在线观看| 丁香五月综合| 五月 丁香 欧美| 日韩限制级大尺度黑料泄密大尺度视频一区二区在线观看 | 丁香五月色情| 日韩五月婷婷| 超碰99在线观看| 夜夜骑日日操| 青草青草视频2免费观看 | 天天开心婷婷丁香五月| 免费观看18视频网站| sewuyuejiqingwang| www,黄色在线,con| 婷婷五月视屏| 色欲婷婷五月天丁香| 日韩精品999| 色噜噜狠狠色综合无码久久欧美| 久久婷婷热| 精品99网站| 丁香狠狠干| 色播五月网| 五月色丁香| 五月丁香成人网| 涩涩五| 色吊操色妞| 偷偷操99| 色色综合网站| 成人精品视频99在线观看免费| 婷婷五月激情在线| 色五月婷婷伊人| 久久婷狠狠色| 少妇丁香婷婷 | 精品久久久久成人码免费动漫| 俺去也在线官网| 99ri视频在线观看| 婷婷综合97| 亚洲无码成人网| AV片一区在线观看| 精品人妻一区二区三区四区不卡在| 69精品无码一区二区三区| 日本啪啪网| 婷婷五月成年人| 国内自拍97在线| 国产免费一区二区三区三州老师F1F1.CC | 色婷婷网| 婷婷五月天AV激情| 日本熟女啪啪| 丁香激情网| 我爱宗和色| 青青久久大香蕉| 人妻久久久久久| 色播丁香婷婷五月激情| 色五月色情| 亚洲九九夜夜| sewuyuejiqingwang| 丁香六月av| 99热免费在线| www,五月天激情| 538任你爽视频不一样的| 亚洲中文乱字字幕在线永久| 天天干天天玩天天夜天天射天天操天天日蜜臀少妇 | 成人丁香五月天| 婷婷综合在线| 五月成人丁香av91| 六月婷婷综合激情| 天天做天天爱天天爽在| 久久一伦| 97碰免费视频在线| 99re这里有精品手机在线| 日本99视频精品免费播放| 99精彩视频| 天天做天天摸| 91综合在线| 色噜噜狠狠狠狠色综合久欧美| 91一起操| 亚洲综合在线丁香五月| 任你日视频| 色色欧美色色| 久久久.COM| 五月天自拍视频| 91婷婷丁香五月| 亚洲黄色网址| 色婷婷综合久久久久| 五月丁香六月婷婷a v| 4399伦理午夜| 国产AV一区二区三区最新精品| 婷婷成人视频| 婷婷五月综合色中文字幕| 亚洲成人AV一区在线观看| 99热.com| 五月停停激情网| 天天射影| 区啪精品| 五月丁香| 色五月综合在线| 丁香五月AV综合| 操操精品| 久久99国产综合精品免费| 色婷婷天堂| 五月丁香六月婷婷a v| 99色天堂| www狠狠爱com| 婷婷五月花| 99啪99| 开心激情站婷婷五月天| 天天色播| 久久 中文 日本| 少妇人妻偷人精品无码视频新浪| 久久99精品久久久久久噜噜| 日逼免费视频| 婷婷色婷婷亚洲成人| 久久精品噜噜噜成人A∨色欲| 丁香五月天啪啪| 国产亚洲精品久久一区二区三区| www.五月天婷婷姐姐| 国产成人精品123区免费视频| 久草五月婷婷| 丁香婷婷色情社区成人小说| 97干视频| 亚洲免费视频网站| 91人在线观看| 欧美婷婷综合| 99爱精品| 欧美激情凹凸丁香网| 五月婷婷久久激情| av网址在线| 亚洲av成人电影在线观看| 丁香狠狠干| 操人无码| www.色婷婷.com| 深爱激情网综合| 婷婷五月天激情在线观看 | 成人婷99最新| 精品九九婷婷| 无遮羞AV| 在线99热| 97资源碰碰| 天天操夜夜操| 日韩精品二三区| 五月婷婷六月爱| 去干网av| 六月丁香av| 国产人人操| 久久黄色片| 婷婷亚洲天堂| 91超级碰碰碰| 秋霞AV淫| 色情婷婷五月天| 性生活久久人妻| 亚洲开心激情网| 轮奸综合网| 99日在线视频| 嫩草国产| 91丁香色五月| 成人 在线观看国产| 九九色色| 婷婷午夜天| 亚洲色图五月丁香| 激情五月天小说| 激情综合六月| 开心五月深爱五月婷| 99精品这里只有免费视频 | 久久99网| 天天干天天玩天天夜天天射天天操天天日蜜臀少妇 | 色婷婷精品视频在线播放| 久久精品无码一区| 99噜噜噜在线播放| 99无码视频| 日韩成人精品中文字幕| 99碰碰视频| 婷婷激情五月综合| 亚洲五月色| 丁香六月无码| 激情www.98com| 丁香5月综合啪啪| 九九免费精品在线视频| 五月丁香猫咪久久婷婷综合视频激情四射网入口 | 丁香五月激情性色郤| 色色色色色色色色色色色色色色,网站| 天堂成人A片永久免费网站| 色婷婷综合网站| 婷婷社区五月天| 无码任你操| 亚洲永久免费| 九九色色网| 久久久ww| 色色五月天网站| 激情五月婷| 九九久久99精品免费观看www| 五月六月婷| 五月天激情亚洲| 人人舔人人| 五月丁香六月婷婷在线| 99精品小视频| 天天草比天天爽| 天天插天天插天天插天天插| 精品三区影院| 色色色色色色色色色色色色色色,网站| 婷婷5月九九| 99热在线观看精品| 人人干人人操人人摸| 婷婷丁香五月天激情| 天天综合精品| 五月天伊人综合| 网色99| 操人91| 婷婷激情综合| 99热在线播放| 亚洲A片成人无码久久精品青桔| 97碰碰碰免费公开在线视频| 中文字幕有多少字| 欧美十二区| av一区免费看| www.99热这里精品| 97人操人免费视频| 超碰a女人的天堂| 五月婷在线观看| 色很很96| 美臀自射自家人妻| 激情婷婷狠狠干| 五月丁香六月婷婷亚洲视频| 激情九九这里只有精品| 色婷婷婷婷| www.五月丁香| 99九九精品| 久久婷婷色| 人妻熟人中文字幕一区二区| 熟女少妇内射日韩亚洲| 日本一区二区三区精品视频| 六月色激情|