---
# System prepended metadata

title: 第 2 週 - 補數、採樣、與其他
tags: [計概]

---

---
title: 第二週
tags: 計概
---

{%hackmd _OlqeDJfT46sMoXSly_V_Q %}

## 數位行蹤

數位上的動作都要留意，不論是否有分身，任何記錄都要小心，因為可以透過技術可以判定為同一個人。

## CNN 卷積神經網路

>以下內容是上課時的所做的筆記：
圖片中可以存在很多個 kernel/matrix (3×3矩陣)，然後去跟一個基準的kernel做內積。
因為內積的意義就是很接近的會放大，不接近的會縮小，所以將一個一個的內積加總可以得到分數，由分數去判斷，分數越大代表越相似。

2024/10 編修：修過機器學習的我現在回顧這段內容，一言難盡：)

有興趣的人只要查 `CNN` 就可以知道其基本架構，還有現在常見的模型跟技術了，像是經典的 `ResNet` 等等。

## 外太空的世代

老師說我們這一世代是外太空的世代。

# 如何處理複雜問題

## 1. 抽象化 / 分層

把一些不重要的細節隱藏起來，只在意屬性跟方法：

<iframe src="https://drive.google.com/file/d/1tbMQ9fxX-Rcg9uwx44oqDzVOFtVt-_Go/preview"  height="480"></iframe>

:::info
老師說：
- 外商很需要 system programming 的能力，就是 driver 驅動，系統跟硬體的協調
- 圖的上端是軟體 soft company
    - 雖然現在有些軟體會往下做軟硬整合
- 下端是硬體 foundry
- 網路也一樣 有分層
:::

## 2. 原則discipline

故意的給予一些限制，雖然似乎變得沒什麼彈性，但是其實可以得到一些更好的好處，例如：

- 數位化/二進制
    - 因為事情簡化了，各種操作就變得簡單，更容易除錯，拉成更大的系統
- ~~獵人的制約與誓約~~

:::info
老師說：
- RISC 幾年前才竄起來，更低耗；CISC 單顆更強
- 2024/10 編修：桌機筆電大多就是 CISC 架構；手機等移動端常用 RISC 架構
    - 但是現在大多會各取所長，不是說什麼架構就是怎樣，有興趣的人可以查兩種架構的特色
    - 也可以閱讀我的 [計算機結構筆記]() 看看 `RISC-V` 指令集
:::

## 3. The three -Y's

1. Hierarchy：把系統分成很多層
3. Module：每層的節點都是一個 module 每個點都有定義好的功能
3. Regularity 標準化：這樣節點就可以被用在很多地方，重複使用不浪費

>2024/10 編修回顧：我有點不知道為啥這個在這裡：)

:::info
教授推薦修：
- 電機系的課：例如訊號和系統
- 大三的課：資訊理論 information theorem
    - >2024/10 回顧：後來去聽了有點勸退
:::

# 2 進制 

這部分可以參閱我的 [數位系統實驗筆記]()

### Most Significant Bit (MSB) / 最高有效位數

在補數中表示正負號用，也就是 Sign Bit。當 MSB 進位時，Overflow 發生。

### Least Significant Bit (LSB) / 最低有效位數

### Bytes & Nibbles and Bits

二進制中，一個位數就是一個 Bit，例如 011~2~ 是一個 3 bits 二進制數

- Nibbles 是 4 個 bits 為一組
- Bytes 是 8 個 bits 為一組

:::info
`word` 要看是什麼位元的 CPU，可以是 16、32 或 64 bit 等等
:::

### Most & Least Significant Bytes / 最高 & 最低有效位元組

好像 16 進制比較用的到，例如 `CEBF9AD7` 中 `CE` 就是 MSB，`D7` 就是 LSB

不同語言有不同的儲存順序 可能有些先塞 msb 之類的。

> 2024/10 編修：這就是[大小端序 (Big/Little Endianness)問題](https://zh.wikipedia.org/zh-tw/%E5%AD%97%E8%8A%82%E5%BA%8F)


## Complement / 補數

二進制要如何表達負數？，有以下兩種方法可以達成。

### 1's complement 一補數

直接將某個正數取反，得到的就當作是該數的負數。

缺點是會產生 -0，而且正負數相加時會得到 -0 ，還要再多加 1 才會是 +0。

### 2's complement 二補數

為了避免產生 -0，所以我們將某個正數取反後的值 +1，得到的數當作負數。這樣一來 -0 再加上 1，就會因為溢位而變回 0。


## Extension

當某個較小位數的值，要擴展成較大的位數時，會需要判別該數是有符號還是無符號，決定如何擴展。
>這部分一樣可以參考計算機結構的筆記

### Sign-Extension

有符號的擴展。當原本的值是具有符號時，就需要使用這種擴展。

如果原本的數是負數，則前方的數都補 1；否則補 0


|  | 正數 | 負數 |
| :-: | :-: | :-: |
| 4-bit     | 0b0011~2~     | 0b1011~2~     |
| 8-bit     | 0b00000011~2~     | 0b11111011     |

### Zero-Extension

不論正負數均補 0，因此負數會出問題，所以做這種擴展的只能是跟符號無關的。



<!-- 
這是三小
>Proof：
> 4-bit：|-5| + |11| = 2^4^
> 8-bit：|-5| + |251| = 2^8^
> = |-5| + |11 + 2^8^-2^4^|
> 2^8^-2^4^=2^4^(2^4^-1)=2^4^(2^3^+2^2^+2^1^+2^0^)
> =2^7^+2^6^+2^5^+2^4^
> =11110000~2~

|  | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- |
| - | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
| = | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | -->


## Snifer 

可以攔截封包。

## Syntax 格式 / Symbol 符號

## ACSII Code

只是編碼，沒有實際意義 not semantic rich。
所以有了 word embedding，把文字的 0110 那些，存在一個有意義的位置，用一個叫 BERT 的方法實現文字意義：
>有兩個有相關的物件存在兩個位置
兩個位置相減可以得到一個向量
如果有另外類似關係的兩物件
位置相減可以得到，相同的向量

可以查 NLP natural language program，在 IEEE spectrum 上。

:::info
2024/10 編修：請查 Word2Vec，這是 ML 在處理自然語言時的一個重要的技術
:::

## 採樣率

Bit 的大小決定你能聽到的細緻度，因為越多的 bit 可以儲存越多種 ==大小 / magnitude==

<iframe src="https://drive.google.com/file/d/118K9E8mvSrhDe0WVAOLIe8V6zAD2E0Eg/preview"  height="480"></iframe>


CD 計算時要注意單雙聲道(Mono/Stereo)，圖片在計算時要注意是 3 乘上 8 個 bit。
但是講色彩種類時是 2^3*8^=16,777,216，也就是販賣螢幕常看到的 16.7M。

>2024/10 編修：有些螢幕跟圖片支援的位元深度不是 8 bit 而是 10 bit。

:::info
老師說：
- 採集頻率要 ==兩倍以上== 才不失真，這個訊號與系統會提到。
    - 跟生物力學一樣的東西 (物理治療系的課)
- MP3 跟 JPG 的 P 是 pack
:::

   