---
# System prepended metadata

title: 2024q1 Homework5 (assessment)
tags: [Linux]

---

# 2024q1 Homework5 (assessment)
contributed by < [dcciou](https://github.com/dcciou) >

# 因為自動飲料機而延畢的那一年
作者遇到的問題跟我以前玩過的東西所遇到的問題蠻類似的，尤其是鐵工廠那段，當初也是等到天荒地老受不了改成自己弄。不僅僅是機械製造，任何以實體為最終成果的專案都有著令人又愛又恨的特點:紙上做起來感覺自己是天才，真的要搞成品的時候才發現自己是智障，原本理想的計畫做到最後只剩最簡單的功能，但這就是物質世界有趣的地方。找店家要數據那段，雖然他輕描淡寫的帶過，但個人經驗卻是刻骨銘心，就算告知店家自己是學生，數據是為了課程使用，甚至拿出證明文件，一但出了校門，基本上都會拒絕提供，最後只能乖乖找學餐阿姨。
另外感同身受的就是成本控制，窮學生永遠的痛。
軟體開發部分，以前只做過 line app，硬體也只是一片樹梅派，這部分沒有太多辛酸史。
電路部分，也就偶爾銲銲玩具的程度。
名言佳句的部分，大概是等價交換最有感觸了吧，健身多年，都是犧牲了什麼來達成什麼，完全可以理解。

# 專題簡述
## netfilter
儘管 adblocker ultimate 已經夠方便，但有些把廣告偽裝成貼文的形式仍然難以阻擋，另外擋 yt 廣告時，有時會需要重新整理一次才能撥放影片，蠻令人不愉快的。

:::danger
注意書寫規範！
:::

## 重做 lab0 並彙整學員成果
## 重做 fibdrv 並彙整學員成果

---

IEEE 754, float (single precision)
7.0 =>  0 10000001 11000000000000000000000 8+23
11.0 => 
11為正數， 故第一位為 0 
轉二進制 = 1011 -> 1.011 * 2^3 故真實指數部分=3，偏移量 = 127(127表示指數為0的情況)，故指數部分 = 127+3 =130，再轉成二進制 = 10000010 ，尾數部分共23碼，省略前導1 也就是剩 011 ，其餘位數填0 = 01100000000000000000000整合得: 0 10000010 01100000000000000000000

假設要算-0.125 = -1/8，二進位= -(2^-3) = -0.001，符號位=1﹑指數位 = -3+127 = 124 => 01111100， 尾數全為0 ，得=> 1 01111100 00000000000000000000000
遇到無法整除的數字如: -0.137，則不斷乘2並取其整數位，取完後將剩下的值繼續乘/取，直到精度足夠為止(ex:單精度取到23位) = −0.00100011100001010001111 = −1.00011100001010001111×2^−3
ex:取到第三次時: 0.137 * 2^3 = 1.096，則取1，剩.096繼續取
Q: 既然要往前移三位，幹嘛不多取三位填滿尾數

Q:如果看到二進制怎麼轉回來
A(暫):先把尾數補1，指數部分-127，後根據正負決定進/退位(ex:.011->1.011, 130-127=3 ->1011 -> 11 )，再根據對應的次方數乘一乘加起來
Q:如果小到 2^-127以下怎麼辦
Q:如果改雙精度呢
A:偏移量改成1023

浮點數 * 10 怎麼算
拆成 *8*1.25，* 8直接指數+3，1.25加回去(x+0.25x，如果有溢位再加到指數部分)
ex 7*10 = (7 * 1.25)*8 => 1.11+0.00111 = 10.0011 = 1.00011 * 2
```
轉換過程
教材不懂的地方，逐段逐行逐字

誠實面對自己
浮沙上面蓋高塔
5 月 16 日晚間問答，浮點數運算
```

# 參考資料
https://hackmd.io/@czPKboGUQZi6-txq9HcDqw/BkzftBYAv