---
# System prepended metadata

title: 進制
tags: [數位邏輯]

---

# 進制
「進位制」也就是「進位記數法」
🌟🌟商要除到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"
```





