久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码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ù)字的時候最高位在最左邊所以必須把先算出來的低位放在后面最后算出來的高位放在前面。**如果目標是十六進制同樣操作但除數(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 從原碼到補碼的標準流程和手算實例給定十進制 -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)成目標進制 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 位目標進制數(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 | 国产福利夜| 乱精品一区字幕二区| 欧美一级AAAAAAA| 中国的操老妇女| 偷拍欧美综合| 欧美97日韩精品| 国产按摩一区二区三区| 郑州宾馆老熟女露脸啪啪| 精品午夜福利| 亚洲av资源| 午夜精品久久久久久久| 97伪v| 91九久| 人、人、摸,人、人、草| 亚洲日韩精品久久久久一区壹牛| 校园春色亚洲色图| 亚洲欧美综合图片| 91插B网站| 操91| 中文字幕av一区二区三区人妻少妇| 欧美亚洲厕所精品偷拍91| 哈哈操电影AV| 人妻社区男人天堂| 91在线一起| 日日干男人的天堂| 久久人妻无码毛片A片麻豆| 四月丁香婷婷| 无码一区二区三区四区五区六区七区八区九区十区视频 | 日本999精品| av麻豆啪啪| 久久久新亚洲AV| 91久久国产精品| 91n处女在线观看| 欲综合网| 男人的天堂免费| 国产麻豆91欧美一区二区久久婷婷国产精品| 欧美与日韩97| 欧美日韩亚洲少妇寂寞影院正在播放| 欧美性色欧美| 高清无码久操视频| 日本三级一区二区 在线| 欧美真人抽搐一进一出gif| 成人一二| 欧美日韩日产免费网站看| 激情五月天插| 色999五月色| 国产热RE99久久6国产精品首| 国产精品免费美女视频| 亚洲成av人片色午夜乱码| 18禁超污无遮挡无码免费网| 亚洲国产欧美中文永久| 婷婷五月天_亚洲小说欧美激情另类_精品久久国产字幕 | 99热久| 97免费在线视频在线观看| 无码91| 麻豆成人av| 四虎免费视频| 欧美性爱精品七区| 综合色久欲| 草草草草视频| 国产91精品福利在线| 91呆哥人妻| 色欧美天天| 麻豆性爱视频在线播放| 综合欧美亚洲| 91久久国产综合久久| 啊啊啊好湿久久| 9999久久久久| 91精品无码久久久久久久| 久久精品国产99精品亚洲蜜...| 操www| 97WW精品| 五月天亚洲网| 日韩黄色片子| 又黄又爽在线观看视频| 997色在线| 久久伊人亚洲AV无码网站| 亚洲中文字母在线播放| 用力操死我| 97精品视频在线| 亚洲精品一二牛牛| 色婷婷色99国产综合精品| 91狠狠综合久久久久久| 婷婷九月丁香| 91精品啪在线观看国产城中村| 色哟哟国产精品免费网址| 91 国产丝袜在线播放-百度| 国产精品久久久无码aV去| 欧美人人AAA| 夜夜福利| 久久久久亚洲Aⅴ无码| 97超碰欧美| 国产一区在线观看无码AV| 亚洲色综合| 很很很很操| 日本一级真人黄色性爱视频| 婷婷五月天av| 大香蕉日韩欧美| 在线无码网站| 伊人四虎综合| 精品毛片久久久精品毛片| 欧美精品在线观看| 资源新线在线天堂| av天天在线观看| 国产怡红院在线| 国产亚洲国产超碰| 人人操人人精品影片| 欧美精品一区二区少妇免费A片| 熟妇在线视频一区二区| 久久久久久久9| 亚洲丝袜色| 九九九九一区| 婷婷久久五月天| 美女上床网站| 97自拍视频在线| 午夜操一视频一区| 欧美中文字幕男人天堂久久精品| 超碰2017| 人妻丝袜肏逼| 操逼片中文| 97bbn| 日韩一区二区三区四区五区 | 9国产超碰| 91天天日| 久日91在线| 国产又黄又爽| 我想要啊 啊 啊| 狠狠色噜噜狠狠狠狠狠色综合久久| 久久一二三四五六七八九区区| 久久av无码| 国产精品网站www| 欧美一区二区三区入口| 国产丸一视频| 激情文学网伊人| 欧美不卡五十路| 亚洲色9| 天天看天天在线精品| 欧美色图91p| 国产超碰| 免费精品国偷自产在线在线| 色综合20p| 亚洲AV无码久久久国产精品 | 婷婷综合久久| 秋霞一级鲁丝片A片| 色婷婷成人综合| 日韩无码三级影院| 啪啪综合网| 白丝少妇一区二区| 六月丁香网| 百度百度日本操逼| 91操熟女视频| 人妻 制服 日韩 中文 在线| 大香蕉五月天婷婷| 免费在线黄片视频| 激情婷婷丁香| 国产9 9在线 | 亚洲| 天天操天天日天天干| 思思热在线观看| 中文字幕中文字幕一区二区| 超碰97人妻| 色偷偷人人玩人人舔人人操人人摸人人爽| 久久久久13| 岛国网址国产| 国产精品99999| 涩涩久久精品| 大香蕉免| 亚洲少妇喷视频看| 国产精点久久久成人| 国产精品黑人一区二区三区| 五月天日日操夜夜操| 中文乱码99| 国产av美女被艹的乱叫| 国产精品久久久久亚洲av| 综合97| 超碰97.com| 麻豆成人av| 欧美综合站| 极品美女福利在线观看| 无码少妇精品一区二区60岁老人| wwwxxx日本爽| 小说区 图片区色 综合区| 本道在线| 久久网亚洲| 国产白领连续中出在线播放| 精品.99999| 日韩97P| 999久久芭蕾| 亚洲 综合 第一页| 91日产欧美| 91大神电影天堂| 丁香六月激情| 在线啊啊啊啊| 熟女日韩| 天天综合网91入口| 国产大片精久久久久久| 操九九九九九九| 人妻中文在线| 日韩99神马视频播放片在线播放| 久久九九99| 国产激情在线观看| 曰韩成人免费视频| 在线观看日韩av不卡| 五月婷婷丁香中文字幕| 日韩激情中文字幕有码| 亚洲最大AV网| 日日操天天操| 一本一首道人妻少妇免费久久| 97欧美精品综合| 91男女啊啊啊| 一区二区 日韩 欧美 国产 传媒| 五月天伊人| 99re只有精品| 少妇的嫩逼图片| 久草资源在线| 国产精品福利资源在线尤物| 久操com| 亚洲精品亚洲人成在线麻豆| 91中文在线| 久久性爱视频| 亚洲城人男人的天堂| 91老司机在线视频免费观看| 亚洲视频一二区| 涩涩久久精品| 男人的天堂网页| 百度百度日本操逼| 欧美一区二区三区入口| www.色操逼| 中文字幕五区| 日本人妻天堂网站在线播放| 骚货操死你| 超碰97亚洲| 人人做天天爱| 夜夜爽妓女| 久草精品视频| 少妇久久久久久| 中文字幕日韩人妻视频| 欧美日韩丝袜 | 男女日B国产| 午夜男人av| 久久婷婷五月天| 日逼五月天| 午夜九九| 在线综合 亚洲 欧美中文字幕| 亚洲一卡2卡3卡4卡乱码网站 | 易易A毛视频| 亚洲国产精品久久AV| 蜜乳av一区二区| 91精品大奶人妻| 中文字幕在线观看第二页| 亚洲国产青青| 精品视频在线观看精品| 中文字幕在线高清男人的天堂| 97国产色综合| 国产精品另类一区大香蕉| 亚洲性网| 九九热最新| 最新精品久久蜜桃 | 五月婷婷激情综合| 久久妇| 69一区二区三区 | 亚洲色棕合| 中文字幕天堂在线| 五月激情小说| 久久风骚城市| 亚洲色图欧美色图日韩色图| 欧美婷婷久久| 思思热国产高清| 日韩女模中文造逼| 欧美大干日韩| 激情国产乱伦Av| 男人的天堂.com| 99999亚洲另类| 亚洲中文字幕久久人妻| 在线视频五十市| 欧美99999| 亚洲午夜av| 97精品国产精品免费观看| 男人午夜天堂| 大香蕉十区| 美女啊啊啊啊啊啊| 丁香五月天啪啪| 九九人妻| 亚洲日韩国产欧美综合v| 大香蕉十区| 可免费观看的av毛片中日美韩| 六月婷婷综合| 99999国产精品| 亚欧性爱在线无码| 国内一区二区免费| 无码一区二区三区四区五区六区七区八区九区十区视频 | 熟妇人妻丰满久久久久久久无码| 国产欧美日韩在线不卡第一页| 九草九九九| 欧美不卡二区| 日韩丨制服丨中文|在线| 看黄片视频免费| 土豪酒店各种姿势玩弄极品幼稚| 国产一级操B视频| 久久久久人| 午夜黄色免费在线观看| 不卡日本一区二区| 久久久com| 国产三级资源在线观看| 国产欧美日韩在线不卡第一页 | 久久久中文| 亚洲激情久久| 免费人成毛片乱码| 久久超碰亚洲人| 日本羞羞的视频在线播放 | 亚洲人妻中文在线视频| 中美日韩毛片| 手机在线中文字幕国产| 国内一区二区三区| 色五月69夫妻| 成人乱码一区二区三少妇| 97超碰国产亚洲精品| 偷窥自拍A片| 啊啊啊操死我| Aa东京男人的天堂| 久久人人妻| www.亚洲黄色| 97视频在线免费| 欧美亚州手机在线| 丁香六月东京热| 久久久不卡| 神马午夜久久久| 五月天婷精品激情| 男女一进一出视频久久| 极品色电影院| 亚州情色j区| 一个色导综合| 国产久久久久久| 久操在97| 日韩无码嘿咻黑热久| 国产av波波国产精品| 久久久涩| 成人片视频| 精品久久青青草| 岛国大片在线观看网站入口| 夜色91| 国产精品第二页| 成人在线视频网| 欧美成人A√在线一区二区| 91n.欧美| 久久久∴| 亚洲影院小综合| 亚洲AV无码乱码在线观看性色| 97在线观看免费视频| 伊人久久亚洲色欲综合网站| 日本天天干天天搞一区| 青青草吊丝| 少妇超碰在线| 欧美亚洲中文字幕| 国产精品成人福利在线| 国产在线综合网| 麻豆一区二区三区在线看 | 亚洲无码偷拍| 欧美亚洲91| 9美女超碰在线免费观看| 九九拍拍精品视频在线播放| 91在线美女| 狠狠综合| 色蜜AV| 国内毛片免费h片在线| 国产隔壁老王影院在线| 色欲天天综合久久久无码网中文| 校园春色 亚洲| 日韩图区| 9999九九九久久久| 91伊人大香蕉| 天天综和| 熟妇艹鸡八| 少妇国产不卡| 久久人人爽爽爽人久久久| 中文字幕 人妻不满 在线视频| 99久久久er直播网址| av网站在线观看了| 日本色色色视频| 人人操,操人人| 亚洲AV无线| 日韩黄色一区二区三区| 在线不卡视频| 思思热在线观看| 亚洲少妇喷视频看| 四虎影库国产精品免费| 久久久一热在线播放| 男人夜色天堂ss| 好吊妞转入那个网| 99老司机精品视频在线观看| 中文字幕一区二区无码成人| 国产精品久久久无码aV去| 白丝一区| 亚洲成人日韩小说| 日韩午夜精品一区二区三区电影| 国产91精品福利在线| 欧美性爱三区二区| 九九黄色网| 天美传媒一二三区永久网站| 欧美日日夜夜| 天天综合网~91入口| 国产后入清纯| 97天堂| 国产精品久久aV| 日韩欧美成人午夜福利| 国产精品久久久777| 一区=区三区视频| 婷婷15月天青娱乐| 抽插一区二区视频| 亚洲精品久久久久毛片A片拉屎 | 中文字幕在线第二页| 激情啪啪视频| 97亚洲欧美| 亚洲一区日韩精品| 91粉嫩萝控精品福利网站_精品影音先锋国 | 粉嫩绯色AV一区二区在线| 久久婷五月| 亚洲三级网址久久最新| 国产精品在线一区二区| 97国产超碰| 超碰色男人操熟女| 99成人| 91熟女综合| 久草综合网| 先锋影音av先锋一区| 青娱乐日韩无码| 精品美女少妇一区二区| 欧美日韩国产另类综合| 欧美熟爽综合| 欧美九一精品久久久熟妇| 大香蕉一级黄色片久久| 男女激情黄色网址| 日韩天堂av电影在线观看| 一本色道久久综合熟妇| 日本人妻伦在线中文字幕| 亚洲AV永久无码一区仙野| 色女网日韩| 99久久99九九99九九九| 18禁的网站在线| 99青草| 97伦综合| 人人操人人大香蕉| 成人熟女区| 天堂v无码免费视频| 丁香婷婷啪啪| 超碰一区二区| 免费的很黄很污的全部视频| 日本精品人妻少妇一区二区| 97超碰9| 欧亚在线视频| 蜜臀99久久精品| 草草影院最新网址| 日本不卡二三区| 极品销魂美女一区二区| 人妻加勒比东京热| 国产又粗又长视频| 天天做天天爽| 校园春色亚洲色图| 欧美日韩91| 熟妇无码视频三区| 最新国产亚洲精品精品国产亚洲综合| 久草男人天堂| 老熟女乱子伦中文字幕一区二区| 啊啊啊啊啊操我视频| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 久久免费看高潮毛片韩国| 农村少妇久久久久久久| 激情AV| 欧美三四五区| 九九热在线视频| 九t超碰| 97五月天| 亚洲精品久久久久毛片A片拉屎 | 婷婷激情四射| 色九九九九久| 日韩欧无码一区二区三区免费不卡| 大香蕉婷婷| 久久久久久久九九九九| 97久久久久久久精| 国产在线视频二区| 安微少妇操BBB| 日本三级大片| 99精品国产户外露出| 秋霞男人网| 一区不卡在线观看av| 无码男人天堂| 国产免费久久精品99re韩国| 亚洲无码太久| 久久婷婷苹果| 亚洲熟妇丝袜在线观看| 五月天丁香婷婷综合网站| 亚洲一二三四区在线免费看视频| 午夜免费视频1000| 日韩黄色片子| 欧美,日韩,中文,另类| 婷婷激情四射| 麻豆国产视频精品观看| 国产精品久久久久999| 久久精品99| 插入逼91| 人妻喷水| 九九热五区| 激情干在线| 乱欲视频| 蜜臀久久99精品久久久久久成人小说| 亚洲天堂另类美腿| 精品久久久久av影院| 欧美情色亚洲| 性性欧美| 小泽玛利亚一二三| www.av在线视频| 国产麻豆91欧美一区二区久久婷婷国产精品 | 亚洲美女30b| 18禁超污无遮挡无码免费网| 女人精品内射国产99| 欧美激情色婷婷花野真衣一区二区| 日韩av不卡在线观看| 精品人妻一区二区三区日产乱码| 色爽——AV| 狠狠躁AV| 大香蕉黄色一区| 天天激情综合站| 99热这里都是精品| 日韩中文9| 大香蕉十区| 99在线精品观看99| 人人摸人人添人人操 | 天天影视色香色欲| 日韩成人性爱电影在线播放| 国产成人无码a| 蜜臀99久| 欧美91网| 男人的天堂2018| 国模久久在线| 91 综合 色| 午夜性| 校园春色制服丝袜中文字亚洲| 无码丰满熟妇一区二区浪潮AV| 久久久少妇| 快灬快灬 一下爽蜜桃在线观看| 青青欧洲黑| 久久97资源 网| 9 9精品一区二区三区| 国产av美女被艹的乱叫| 在线无码网站| 人妻一二三区| 天天草夜夜草高潮片| 国产精品久久久啊| 蜜臀久久99精品久久久久| 久久久女人| 夜夜嗨一区| 天天在线91| 蜜桃臀AV在线| 日韩欧美中文字幕搭讪巨乳美人妻视频| 国产成人主播| 久久熟女久| 日韩一级二级三级免费看完整版国语版| 男人下部插入女人下部| 熟女一区二区| 96精品久久久久中文字幕| 久九九九九九九热| 97这里都是精品| 久久综合精品一区二区三区| 欧亚日韩三区| 美女91色黄18| av2014 日韩在线中文字幕| 日韩欧美麻豆| 大香久久| 午夜福利国产欧美日韩夜夜| av网站在线观看了| 91快色色色色色| 日本www操操操| 91三级理论片播放器| 欧美东京热精品A∨| 91强热人妻| 亚洲精品视频在线| 色性荡荡荡荡视频| 天操老女人| 啊啊啊啊啊好舒服视频| 99少妇内射| 日本影视久久免费| 亚欧性爱无码| 国产成人网址| 九九热超碰97亚洲最新香蕉| 久9久精品视频| 爱丝福利| 狠狠久久手机视频精品| 久久久亚洲欧美综合| 六月激情婷婷| 色噜噜人妻丝袜AV资源| 人妻少妇精品无码专区二区密桃| 日韩大香蕉| 三级AV入口| 色情综合网| 操b网站亚洲无码| 99精品无码| 亚洲在线网站| 亚洲国产无码精品首页久久久| 大稥蕉免费视频这里只有精品| 久久超碰亚洲人| 插B在线观看| 久久精品国产亚洲AV清纯| 色哟哟511老熟女| 亚洲天堂,男人| 色男人色天堂东京热| 超碰色老头| 日本国产欧美高清在线| 又大又黄国产| 伊人宅男大香蕉| 综合国产影视三级| 亚州情色j区| 丝袜美腿射精91| 视频国产成人精品日本亚洲18| 国产精品岛国片在线观看| 日本女厕偷拍| 亚洲在线91| 操屄不卡视频| 男人的亚洲天堂| 日韩国产精品人妻无码久久久| 亚洲aV性爱| 传媒免费一区二区三区| 国产强奸乱伦无码视频| www.色婷婷| 我想要啊 啊 啊| 久久透逼视频| 九九久久久九九| 老司机香蕉久久久久| 一线黄色免费性爱片| 日韩天堂av电影在线观看| 久久黄黄黄| 91人妻素女| 精品久久久不卡一区二区| 综合伊人网12色| 欧美有码激情视频一区二区三区| 人妻激情视频| 极品色www影院| julia中文字幕在线观看| 亚洲成aⅴ人片不卡无码| 婷婷伊人一区| 精品无码久久久久久久久果冻糖心| 免费视频a级毛片免费视频| 超碰伊人在线| 日韩欧美俄罗斯A片| 精品国产乱码久久久兰草影视| 亚洲春色欧美激情自拍| 日本天堂网| 1000部熟女视频在线观看| 日本青青草在线| 精品日韩| 超碰性爱97| 摸奶性爱视频网站在线免费播放| 青青草视频久久久久| 老司机午夜精品视频| 人妻精品4K4K4K4K4| 成·人免费午夜在线观看| 欧美天天拍| 精品一级毛片在线观看| 在线97在线| 久久青青草原免费视频| 日本欧美m v精品网站加| 亚欧日韩成人| 一区二区无码视频| 女优视频第10页| 懂色aV一区二区天美传媒| 玖玖爱综合| 亚洲囯产精品女人久久久| 内射卯月麻衣| www.色综合| 国产午夜在线观看| 天天天天做夜夜夜夜做| 亚洲图片欧洲图片aⅴ| 天天影视综合色| 亚洲天天艹| 亚洲精品国产无码高清| 欧美综合自拍亚洲综合图| 婷婷五月激情综合| 69视频入口| 欧美 亚洲 91| 欧美色色色| 人人么人人操| 夜夜青青无码影院| 黄色AV影视| 国产亚洲欧美每日在线| 亚洲AV色图一区| 操人妻丝袜高跟| 无码日韩人妻av一| 啊啊啊无码| 亚洲综合骚逼| 久热69九色熟妇97| 国产精品无套内谢| 欧美亚洲综合高清在线| 啊啊啊好大好湿| 天天爽天天爽| 国产精品久久久久中文字幕| 91精品人妻一区二区三区蜜臀| 绯色AV粉色AV蜜臀AV| 日本欧美国内在线| 久久性生大片免费观看性| 啊啊啊好疼| 人妻夜夜爽天天爽麻豆三区网站 | 一起草高清无码| 老司机午夜精品福利视频一区二区| 婷婷在线播放| 亚洲一区二区三区欧美日韩| 综合影院永久入口国产| 激情婷婷黑人91| 日韩精品操少妇| 久久大香蕉手机高清视频| 九九综合久久| 曰韩操B| 久久婷婷电影网| 成人九九| 亚欧美综合| 欧美性爱一区二区三区四区 | 天天噜| 色天天野狼综合社区| 伊人久久大香线综合无码| 色99视频| 爱我干综合| 日本性爱不卡视频| 无码人妻精品一区二区中文| 亚洲婷婷丁香在线| 亚洲色婷婷综合久久久久中文| 动漫av中文| 日韩9999| 中文字幕人妻色偷偷久久皮| 区一在线观看| 亚洲色图在线视频| 天天流夜夜操| 色婷婷五月天| 久热伊人| 婷婷在线播放| 久久久久久久人妻| 色优久久| 91熟女熟妇视频网站 | 国产一级内射高清视频| 爱爱啊啊啊| 五月丁香激情四射| 女性91网站| 欧美亚洲激情| 日韩中文字墓| 欧美日韩大香蕉| 18禁在线视频| 8x福利精品第一福利视频导航| 色视频蜜乳| 日韩人妻一区二区| 日韩熟女操逼| 国产女人高潮嗷嗷嗷叫小说 | 99精品在线| 在线观看一卡二卡| 男人下部插入女人下部 | 妇女性内射冈站HDWWWCOM| 少妇高潮流水av免费| 黄色人人| 嫖老熟女A片一二三区| 成人AV在线电影| 日韩黄色av中文字幕| 116美女午夜| 天天看特黄的免费网站 | 人妻在线中出视频| 欧洲一区二区三区免费| 9久久久久| 久热久一区二区三区| 欧美日韩成人在线| 91天美免费| 1234区中文字幕在线观看_青青草国产在线_日韩一区二区 | 四虎午夜影院| 欧美经典一区二区三区| 欧美日本一区二区a人| 激情丁香婷婷| 毛片17S| 午夜综合在线| 亚洲欧洲自拍| 日韩激情啪啪啪| 色色五月婷婷| 曰本熟女视频| julia国产在线| 国产粉嫩蜜臀av一区二区三区| 伊人精品久久网站| 日本福利二区视频| 91精品人妻一区二区三区蜜桃臀| 狠狠爱AV| 青娱乐休闲视频在线观看| 一级片在线观看高清无码| 日韩另类| 欧美激情久| 91综合站| 在线可观看的黄色网址| 九九热九九热| 91老熟女91老女人| 日韩三级久久久| 偷拍亚洲| 激情开心五月天| 大香蕉伊人色偷偷在线| 精品久久在线区一区| 91精品婷婷国产综合久久竹菊| 激情文学小说一区二区| 日韩兔费看黄片| 草草网站影院白丝内射| 18一区二区三区| 综合天天。| 看免费一级在线播放毛片| 久久精品色欧美aⅴ一区二区| 亚洲欧美一区二区三区在钱蜜桃 | 99久国产精品午夜性色福利| 国产成人无码久久精品| 久久99999| 韩国三级色呦呦| 一区二区三区激情在线观看| 大香蕉中文aV在线| 校园春色 欧美| 性色av婷婷久久一区二区点复制| 西西美女视频网| 亚洲色图欧美一区二区不卡| 91麻豆va国产精品| 成人精品欧洲亚洲| 午夜a成v人电影| 青青国产精品在线| 婷婷性网| 久9视频| 丝袜美腿校园春色| 人妻无一区二区三区| 中文字暮97| 大香蕉淫人| www久久99| 啊啊啊啊,啊啊好多水| 天天日天天搞天天干| 美女人妻色网站| 九九草| 欧美国产日韩清纯唯美| 天天影视综合色| www.国产高潮精品| 国内外毛片在线观看| 欧美日韩国产高清在线一二三区 | 天天做日日做天天欢。| 色妇91| 亚州操逼图| 精彩久久中文| 国产真实野战在线视频| 国产吹潮女在线观看| a天堂视频| 欧美色道啊| 精品亚洲国产成人AV制服丝袜| 国产精品久久久久久久久久二区三区| 在线看片国产精品每日更新| 国偷自 一区二区| 熟女六十路| 亚洲综合色图欧美| 大奶啊啊好爽| 熟妇综合一区二区三区| 日本97久久久精品| 精品午夜福利国产一区二区在线观看| 亚洲精品国产精品乱码不卡| 国内毛片婷婷六月色| 欧美在线综合| 国产激情综合五月久久| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区 | 成年无码动漫av片无尽在线 | 97啪啪| 91骚妇| blacked精品一区国产| 夜夜做夜夜爽精品视频| 免费一级视频特黄色大片| 亚洲不雅视频1区二区| 偷拍欧美激情| 嫩草一区二区在线观看| 97超碰精品图片| 欧美少妇一区二区三区| 岛国视频一二三区| 日韩91网| 欧美亚洲影视| 成人免费福利在线观看| 亚洲天堂男人天堂网| 91新在线欧美| 久久精品色欧美aⅴ一区二区| 男人的天堂va在线| 国产丝袜美腿美女麻豆| 丝袜熟女一区二区三区| 国内一区二区免费| 国产精品不卡一区二区三区| 欧美精品999| 玖玖爱在线视频免费观看| 亚洲的天堂网| 97色冈| 狠狠色噜噜狠狠狠狠狠色综合久久| 人妻91少妇| 诱惑人妻欧美一区在线播放| 99久久婷婷国产综合| 20cm女自慰在线日韩欧美| 中字一区| 日少妇亚洲版| 国产一级片| 国产成年免费大片黄在线观看| 国产精品乱码久久久久久久久| 99热aaa| 91色情黑丝搞鸡在线观看一区二区三区三州| 国产家庭乱伦表演| 九九九不卡| 2026国产精品视频| 国产精品国产自产拍高清AV| 色欲日韩欧美在线一区| 黄人人操人人操| 99999re| 四虎影视 亚洲无码| 超碰在线人妻不卡| 屌逼传媒| 亚洲日韩精品在线播放| 手机在线A片| 午夜视频黄| 精品传媒在线一区| 亚洲第一男人天堂| 涩涩久久精品| 中日韩久久人妻一区二区| 天美精品av| 亚洲五月婷婷| 日韩激情啪啪| 91艹B视频| 中文人妻av高清一区| 久久精品熟女亚洲AV麻豆软件| 99热在线只有精品| 吊色| 亚州国产成人精品女人久久| 青青青青草av在线观看| 天天摸夜夜摸| 精品国产嫩穴视频| 成人在线视频二区| 麻豆国产尤物AV| 9九九九九视频在线观看| 六月婷婷综合| 欧美日韩第一页| 在线强奷到舒服的无码视频| 性开放中文AV高清无码免费看| 中文字幕精品一区欧美| 日韩激情无码影院| 国产午夜福利电影免费在线观看| 9999久久久| 97视频在线| 91香蕉国产尤物视频| 天天综合网91| 一级乱伦网站| 乱抡国产91| 欧美区亚洲区偷拍区 | 久久久久久性爱片| 97资源超碰| 蜜桃精品一区二区三区ww| 蜜臀精品1区2区| 福利风月五月天影院| 日韩钢筋无码高清啾啾啾| 久久综合久久综合人久久夜精品| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 91少妇人妻| 九九九九热| 久久性爱视频99| 亚瑟国产精品久久无码| 金莲网址| av资源在线播放天堂| 五月天激情小说| 亚洲熟妇丝袜在线观看| 美腿丝袜高跟网免费视频免费视频| 东京热一区二区三区四区五区六区| 国产丰满熟夫69mpp| 亚洲资源网| 97久操| 色吧 综合| 丰满人妻一区二区三区四区| 5278欧美一区二区三区| 人妻少妇精品一区二区三区| 97激情97激情| AV久日| 国产精品久久久久婷婷二区次| 三上悠亚在线毛片91| 狠狠色伊人亚洲综合网站色| 乳欲人妻办公室奶水| 久久香蕉影院| 91日日| 久久成人精品| 国产精品白丝| 国产精品自拍xxxx| 六月丁香五月婷婷| 少妇三P| 蜜臀久久99精品久久久久久成人小说 | 国产人妻天天干精品| 91在线页| 亚洲综合校园春色| 亚洲男人天堂av| 日韩久久.一级黄色片| 久久国产视频性吧| 国产偷人妻精品一区二区在线| 欧美天天影院| 翔田千里AⅤHD无码| 国产精品亚洲免费| 久久欧洲| 人妻精品一区二区三区| 一级片在线观看高清无码| 97香蕉碰碰人妻国产欧美| 福利风月五月天影院| 国产丁香精品露脸视频| ji熟女.com| 久久女人一区二区三区| 乱码人妻一区二区三区| 麻豆三极片| 九色PORNY9l原创自拍| 久久久久9| 84YTCOM性无码| 欧美做爰无码A片视频| 鸥美插入视频| 狠狠操狠狠操操| 99热精品在线| 欧美大色交| 无码操逼视频一下| 性爱久久| 亚洲国产97在线精品一区| 国产精品女生av| 乱理日韩中文| 五十路熟女人妻一区二区三区四区五| 国产福利av精彩对白| 欧美伦乱爱| 一区二区三区美女超清| 蜜桃久久综合视频| 韩日欧亚a级| 九九无码视频| 久久9精品网站| 久久成人国产| 欧美韩国你懂得在线| 欧美中文字幕日韩在线| 久久最新免费视频23| 好吊色综合| 三级三级三级日本99| 熟女熟妇一区二区三四区| 国内自拍 日韩激情 99| 99re6国产精品99re| 日日噜噜夜夜狠狠视频无| 白丝AV网站| 国产精品福利资源在线尤物| 亚洲午夜免费狠狠干| 夜夜躁狠狠躁日日躁av| www.夜夜| 天天日夜干| 日韩欧美视频青青| 欧美亚洲91| 性感女人网页在线观看视频| 国内外内射高清视频| 91精品电影18| 中文久久| 九九九久千久久激情蜜桃在线看 | 啊啊啊啊啊啊啊啊在线观看| 久操大香蕉手机视频在线看| 国产97免费视频| 91久久精品蜜臀| 精品国产Av无码久久久伦古装| 综合日本女人伊人| 韩国一级做a久久久久| 电影69乱码96| 99e久久国产精品| 九九国产| 亚洲中文字母在线播放| 91久| 肉丝网站91| 强奸国产精品视频| 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 成人性交午夜免费片| 男人亚洲91首页在线| 欧美夜夜草视频| 精品9区| 丁香色色网| 91老熟女视频| 精品亚洲俞拍视频一区| 亞洲久久直播| 99999亚洲| 丝袜无码a片| 欧美丰满熟妇XXXX性ppX人交| 夜夜精品视频| 最新中文字幕av| 亚洲欧洲综合视频在线| 久久久久久9| 国产欧美后入| 另类视频在线| 欧美偷拍区| 久久熟女精品不卡一区| 性爱动态120秒| 精品人妻中文字幕4399| 成人夜夜| 欧洲中文字幕| 天堂中文日本在线观看| 欧美资源| 久久久久久久久久久久欧美日| 色色色色综合网| 成人性爱AV在线免费观看| 青青草原成人| 少妇500双飞99| 久久性视频| 色翁荡息又大又硬又粗又爽| 欧美丝袜91| 密臀AV在线| 性色一线| 日本日皮视频逼| 91在线秘 男同| 日本不卡在线二区三区| 丝袜视频一区二区在线播放国产中文| 噜噜吧,噜噜色,噜噜| 国产日韩欧美操逼视频| 0755午夜福利视频| 99蜜桃臀久久久欧美精品网站| 人妻丝袜无 码视频专区| 天天视频综合在线观看视频| 精品免费视频国产一区| 色原狠狠天天天| 久操在97| 用力操死我| 人人色97| 97碰在线视频| blacked精品一区国产| 黄色AV免费| 国产精品一区二区三区免费视频| 精品九九九九九九九九九| 男人天堂.AB| 五月丁香婷婷综合| 最新日韩黄片| 精品成人亚洲午夜电影| 成人精品无码| 中文字幕在线免费观看 | 色在线亚洲视频www| 加勒比综合| 97中文字幕九区| 久久女女| 997色在线| 97欧美色综合| 韩日精品福利视频一区不卡在线免| www四虎| 香一区二区三区| 蜜桃久久综合视频| 婷婷五月丁香五月| 天天爽夜夜操| 开心五月激情网| 免费看日产一区二区三区| 久久国产乱子伦精品免费女,网站| 国产精品一区二区校花| 中文字幕一区二区三区四区在线视频| 91丝袜视频在线观看| 综合亚洲网| 好湿好紧视频| 久草精品在线| 另类小说欧美激情校园春色| 久久婷婷苹果| 97色操| juliaann丝袜| 久久内射| 久久久96| 91香蕉国产尤物视频| 日本操逼无码| 久久av无码| 国产特级毛片AAAAAA高潮流水 | 婷婷色色五月天福利| 国产福利视频精品视频| 国产精品ⅴ无码大片在线看.| 色欲三区| 日本 欧美 亚中文字幕|