---
# System prepended metadata

title: 數字系統|第一週
tags: [數位系統與實驗]

---

---
title: 數字系統|第一週
tags: 數位系統與實驗
---

# 二進位轉十進位

## 整數

整數的部分就是用除法，將每次的餘數記錄下來直到除到商數為 0
然後從第 1 次排到最後一次，由小排到大
> 以 3 為例的話，第一次商數是 1，餘數是 1
> 第二次商數是 0；餘數是 1
> 將餘數 1 和 1 順序由小排到大就是 11

## 小數

小數的話則是用乘法，將該小數每次都乘以 2；每次乘完都捨棄整數的部分
如果個位數有出現 1 的話，則紀錄 1；0的話就紀錄 0
>例如 0.375，第一次乘以 2 得到 0.75，所以紀錄 0，捨棄整數部分
>第二次乘以 2，得到 1.5，紀錄 1，捨棄整數部分，得到 0.5
>第三次乘以 2，得到 1，紀錄 1，捨棄整數部分，得到 0，結束
>最後從大到小排列，得到 0.011

:::info
上面是二進位轉十進位，所以如果是其他進位轉十進位
在判斷的部分要做一些修正，也就是整數部分在紀錄餘數，以及小數部分記錄整數的地方
因為二進制就只有 0 跟 1，所以要記得其他進制是有其數字的
:::


## 不同底之間的轉換

通常是先轉成十進位，再轉成想要的進位，但如果是倍數間的近位轉換，可以用特殊的方式
像是二進制轉十六進制，就可以將二進制四個四個劃在一起，合併成一個十六進制
要記得要從小數點開始向左或向右

特殊方法的轉換可以避免小數問題，但是如果事先轉成十進制的方法，就可能會遇到小數問題
也就是要注意循環的部分

# 負數表示法

## Sign and Magnitude (SM)

就是單純用最左邊的位數表示正數或負數
假如有 4 個 bit，要表示 -3 就是將 0011 變成 1011

## 1's complement 1 補數

就是直接將該數字取反，0011 變成 1100
在計算上就是 (2^n^-1) - N
也因此會有 -0 產生

## 2's complement 2 補數

就是直接將該數字取反後加 1，0011 變成 1101
在計算上就是 2^n^- N
因為 0 執行計算後位溢位，所以還是 0

### 好處

二補數的好處就是，最後只要檢查正加正是否變負，負加負是否變正就好
因為其他情況下，捨棄溢位得到的結果都是正確的，只要將二補數用上面的計算表示法寫出來就知道了

https://drive.google.com/uc?id=1OnLbjFqGmBbuZFyFxVUZF-F0iXR6NQRC

# Binary Codes

就是將數字或文字以二進制「顯示」，有各種表示的方法

https://drive.google.com/uc?id=1KI1V5bZfPV8T3d5jHk_QZQzRlk4qDGDw

:::warning
[更多請見](https://www.tutorialspoint.com/computer_logical_organization/binary_codes.htm)
:::
