---
# System prepended metadata

title: 第十課
tags: [C++講義]

---

# 二進制的世界

## 什麼是二進制？

在我們日常生活中，我們使用的數字系統稱為「十進制」，是以 10 為基底的數字系統（例如，0 到 9）。然而，計算機使用的是「二進制」，也就是以 2 為基底的數字系統。二進制只有兩個數字：`0` 和 `1`。

為什麼計算機使用二進制呢？
因為計算機的底層是由電路組成的，而電路中只有兩種狀態：「通電」（1）或「斷電」（0）。二進制非常適合描述這樣的物理狀態。

---

## 二進制的基本概念

### 二進制的數字表示法
二進制數的每一位都是由0或1（稱為 bit）組成，就像十進制只要數字超過9就會進位，十進制只要數字超過1就會進位。例如：

`1+1=10`
`10+1=11`
`11+1=100`
`101*10=？`
`101*11=？`
來試試看

| 二進制 | 十進制 |
| ------ | ------ |
| `000`  | 0      |
| `001`  | 1      |
| `010`  | 2      |
| `011`  | 3      |
| `100`  | 4      |
| `110`  | 6      |
|  `111`   | 7      |
|  `1000`  | 8      |





| 進制 | 百位數 | 十位數 | 個位數 |
| ---- | ------ | --- | ------ |
| 十進制 | 100 | 10 | 1 |
| 二進制 | 4 | 2 | 1 |
| 三進制 | 9 | 3 | 1 |
| 四進制 | 16 | 4 | 1 |
| 九進制 | 81 | 9 | 1 |

比如說十進制中
`173=1*100+7*10+3`
二進制中
`101110=1*32+0*16+1*8+1*4+1*2+0*1=46`
`101010=42`
`111111+1-1=1000000-1=64-1=63`
`101*10=1010`
`101*11=1111`


**例子：**  

十進制數轉換成二進制：
31=11111
17=10001
11=1011
2024=11111101000

二進制數轉換為十進制:
1011=11
111=7
1111=15
11111101001=2025







---

## 為什麼要學二進制？

1. **理解計算機的工作原理：** 二進制是計算機的基礎語言，程式設計、數據儲存都與之密切相關。
2. **掌握進位制的轉換：** 學習二進制有助於理解其他進位制，如八進制、十六進制。
3. **進階演算法的基礎：** 位操作（bitwise operation）在許多演算法中至關重要。

---

## 如何將十進制數轉換為二進制數？

自己查

## 如何將二進制數轉換為十進制數？

自己查

---

## 二進制的應用場景

1. **數據儲存：**  
   - 每個文件、圖片、音樂都是以二進制形式存儲在硬碟或記憶體中。
   - 比如字母 `A` 的二進制碼是 `01000001`（ASCII 編碼）。


3. **壓縮與加密：**  
   - 二進制在資料壓縮與加密演算法中扮演關鍵角色。

4. **邏輯電路設計：**  
   - 電路中的「and迴路」、「or迴路」、「nor迴路」都是基於二進制邏輯構建的。

---

## 練習題

### 1. [**重要的事想跟你一起做。** ](http://120.101.182.21/d/hd112/p/49)
   輸入一個正整數，判斷該數是否為 2 的次方（如 1、2、4、8 等）。  

### 2. [**0和1都能幸福快樂**](http://120.101.182.21/d/hd112/p/51)
### 3. [**不是「0」，就是「1」**](http://120.101.182.21/d/hd112/p/52) 
   輸入一個正整數，輸出它的二進制表示中有多少個 `1`。 
### 4. [**世界被OOOO統治之前**](http://120.101.182.21/d/hd112/p/50)