# 進制 「進位制」也就是「進位記數法」 🌟🌟商要除到0🌟🌟 有問GPT,沒有寫資料出處的,都是GPT的功勞,也有去看YT都有整理上去,就都大概整理一下 說難不難說簡單不簡單,程式倒是想不太到要怎麼做 [TOC] ## 二進制-YT超有趣网络 [二進制YT教學影片](https://youtube.com/shorts/1tZVxTwYeSM?si=xISPbwIup46EXWM4) ![螢幕擷取畫面 2025-04-08 172718](https://hackmd.io/_uploads/ryYMnDGC1e.png) * 將25除以2 * 餘數為1、0 * 最後倒著餘數排回去,就是二進制數字 ### 二進制小原理(秒看懂)-YT tutu旅行 YT影片 [短短十五秒让你看懂二进制的原理](https://www.youtube.com/watch?v=XCQNcH8XZNo) ## 十六進制-YT東東程式學 在這裡講到了進制的數字排列關係,但是沒有計算 剛好下一個李霖老師的就是計算,搭配起來讀剛剛好 [進位制:二進位、八進位YT影片](https://www.youtube.com/watch?v=LdBS7sFOVWU&ab_channel=%E6%9D%B1%E6%9D%B1%E7%A8%8B%E5%BC%8F%E5%AD%B8) * 代表著遇到 16 才會進位 * 而十六進制因為寫 10 ~ 15 會看起來像是兩個位數,就使用ABCDEF代替 * 0 1 2 3 4 5 6 7 8 9 A B C D E F 10 ## 十六進制、有小數-YT李霖老師 李霖老師教的也很好,還有很多其他進制計算做法 [10進制轉R進制YT教學影片](https://www.youtube.com/watch?v=D5Kj99UqJnc&ab_channel=%E6%9D%8E%E9%9C%96%E8%80%81%E5%B8%AB) ![image](https://hackmd.io/_uploads/Sk0bgj6ill.png) 最好奇的肯定就是E是怎麼出來的吧 * 526/16 = 32...14 * 14十六進制裡(0 1 2 3 4 5 6 7 8 9 A B C D E F 10)裡為E ### 小數的部分就是小數點前後分開計算 * 將小數拿出來X2 * 實數的部分拿出來填上 * 原本小數有幾個就乘幾個 * 拿之前乘出來的結果繼續乘 ## 八進制-YT東東程式學 [從零開始學程式#5 進位制:二進位、八進位YT影片](https://www.youtube.com/watch?v=LdBS7sFOVWU&ab_channel=%E6%9D%B1%E6%9D%B1%E7%A8%8B%E5%BC%8F%E5%AD%B8) 這個八進制 12 表示的十我們只能念做「一二」,為了與十進制作區別 ![螢幕擷取畫面 2025-04-08 173620](https://hackmd.io/_uploads/SJySAvf01g.png) * 八進制的第一個位數已經遇到 8 * 所以歸零並讓第二個位數加 1 ## c++程式寫法 ```cpp= //number為要進制的數字,base為選擇多少進制(十進制、二進制...) string convertToBase(int number, int base) { // 29 ➡ 轉成 十六進制(base = 16) 就是 "1D" const string digits = "0123456789ABCDEF"; string result = ""; do { result = digits[number % base] + result; number /= base; } while (number > 0); return result; } ``` 輸入十進制數字: ```cpp= int n = 29; ``` 轉成二進制(base 2): ```cpp= string result = convertToBase(n, 2); // 結果是 "11101" ``` 轉成十六進制(base 16): ```cpp= string result = convertToBase(n, 16); // 結果是 "1D" ```