淺談二進位與十六進位,為什麼電腦要使用?你所不知道的二進位。
淺談二進位與十六進位,為什麼電腦要使用?你所不知道的二進位。 歡迎你點入本篇文章,會促成我想做這篇的原因,主要是因為在上計概時,突然浮現很多靈感,跟一大堆的問題(教授,為什麼要講的這麼淺白呢?我想知道更多啊啊!),為了一次解決我所有的困惑,於是製作本篇文章。 若文章有任何疑點及錯誤的地方歡迎提出。 為何電腦用二進位? 直接說結論,最重要的原因當然就是二進位(0、1)最穩定且可靠的對應電子裝置的開/關狀態。 會使用二進位,也跟電子元件的物理特性息息相關: 電晶體(Transistor)或邏輯閘(Gate)只有兩種穩定狀態:導通(1:ON)跟截止(0:OFF)。 因為這樣的關係,所以可減少誤判跟雜訊影響。 再來就是二進位的抗雜訊的能力強,請看圖: Image Source:類比數位訊號控制 - 鈺傑自動控制 類比訊號中 0 ~ 5V 的任意值容易被雜訊所干擾,有很大機會會預判錯誤。比如說我們有個溫度感測器,輸出 0 ~ 5V 模擬電壓,對應 0°C ~ 100°C。 正常情況下,當感測器輸出 2.50 V,就代表當前溫度為 50°C。如果連線或環境有電磁干擾(如假設旁邊大功率馬...
【C++ 筆記】編譯流程(Compilation Process)
【C++ 筆記】編譯流程(Compilation Process) 很感謝你點進來這篇文章。 你好,我並不是什麼 C++、程式語言的專家,所以本文若有些錯誤麻煩請各位鞭大力一點,我極需各位的指正及指導!!本系列文章的性質主要以詼諧的口吻,一派輕鬆的態度自學程式語言,如果你喜歡,麻煩留言說聲文章讚讚吧! 編譯流程(Compilation Process) 共分四階段: Preprocessing(前置處理) Compilation(編譯) Assembly(組譯) Linking(連結) Image Source:C++ Preprocessor And Preprocessor Directives - GeeksforGeeks 所謂的 Source File 也就是 Source Code,就是 .cpp / .c 檔案。 1. Preprocessing 範例指令:g++ -E main.cpp -o main.i Preprocessing 前置處理是 C / C++ 編譯的第一步,主要對 # 開頭的指令(稱為 marco 巨集)進行處理。 簡單來說就是把 #inc...
【C++ 筆記】前置處理器(preprocessor) - part 33
【C++ 筆記】前置處理器(preprocessor) - part 33 很感謝你點進來這篇文章。 你好,我並不是什麼 C++、程式語言的專家,所以本文若有些錯誤麻煩請各位鞭大力一點,我極需各位的指正及指導!!本系列文章的性質主要以詼諧的口吻,一派輕鬆的態度自學程式語言,如果你喜歡,麻煩留言說聲文章讚讚吧! Introduction preprocessor 是在 C / C++ 編譯前對 Source Code(.cpp files)進行處理的一種工具。 It does many tasks such as including header files, conditional compilation, text substitution, removing comments, etc. From GeeksForGeeks preprocessor 可以做到如下這些事情: 引入標頭檔 條件編譯 文本替換 移除註解 等等 另外也可以讓開發者去選擇說,哪些程式需要被保留(included)或是不需要被保留(excluded)的。 經 preprocessor 處理過後的...
2025 CPE 學習資源整理
2025 CPE 學習資源整理 CPE, Collegiate Programming Examination, 大學程式能力檢定。 註:眾所皆知,DSA 是 Data Structures & Algorithms 的縮寫。 CPE 練習題庫: Yui Huang CPE Official C++ 學習資源(唯一推薦臺大資管孔令傑老師): NTU Programming Design OCW, Professor, Ling-Chieh Kung, MI C++ Programming Language - GeeksForGeeks C++ 教程 | 菜鸟教程 資料結構(Data Structures): 【杰哥數位教室】資料結構 | Youtube DSA Tutorial - GeeksForGeeks 演算法(Algorithms): NYCU Algorithms OCW, Professor, Iris Hui-Ru Jiang, EE DSA Tutorial - GeeksForGeeks 競程相關: 從零到一:那些演算法競賽...
【C++】競程筆記(分治法 D&C)
【C++】競程筆記(分治法 D&C) 程式碼範例參考:NTUCPC Guide,此筆記僅為個人學習用途。 Introducing Divide and Conquer Divide and Conquer 英翻中為分治法,這是一個把大問題切分成多個子問題,最後從這些子問題合併來求得主問題解答的一種方法。 而 Divide and Conquer 的步驟主要有三項: Divide:把原問題拆成多個小且類似的子問題,直到無法再細分。 Conquer:用遞迴解決這些子問題;若遇到規模足夠小的「基本情況(base case)」,則直接輸出答案。 Merge:合併子問題得到最終解,一旦較小的子問題被解決,則遞迴合併所有子問題得到更大問題的答案。 例題:王老先生 Problem Source:https://tioj.sprout.tw/problems/114 題目敘述: 有個正方形土地 $N \times N$ , $N$ 為 $2$ 的正整數次方。 有一格子 $(X, Y)$ 已被王老先生選走了,你要放 $\frac{N \times N - 1}{3}$ 個 3 格的 L...
【CSS 筆記】從零開始的 CSS - part 1
【CSS 筆記】從零開始的 CSS - part 1 Hello Guys,我是 LukeTseng,自從大學放榜後,我就積極不間斷的學習資訊相關的東西,持續地茁壯自己,主要最大的成分還是興趣與熱愛這個學科來支撐的~總之,廢話不多說,本文主要透過網路上的各大免費平台自學,並且整理成一篇筆記以供自己閱讀的同時,也能促進個人的學習軌跡。 簡介(Introduction) CSS 全名為 Cascading Style Sheets(串樣式列表、級聯樣式表、串接樣式表、階層式樣式表),為一種用於將結構化語言(HTML、XML 等)添加樣式的電腦語言。簡單來說就是幫 HTML、XML 等這些語言渲染、美化。 以下圖片的左側是有用 CSS 的網頁,右邊沒有用,顯眼可見的差異。 Image Source:That Time I Tried Browsing the Web Without CSS | CSS-Tricks CSS was released (in 1996), 3 years after HTML (in 1993). The main idea behind its u...
【Uva 題庫解題】C++ 個人解題筆記(一顆星選集) - part 5
【Uva 題庫解題】C++ 個人解題筆記(一顆星選集) - part 5 一篇十題讓你看到爽! CPE 49 道必考題,資料來源:https://cpe.mcu.edu.tw/environment.php 41. Tell me the frequencies! PDF Source:https://onlinejudge.org/external/100/10062.pdf Zerojudge:https://zerojudge.tw/ShowProblem?problemid=c012 題目翻譯: 給定一行文字,你要找出 ASCII 字元出現的頻率。給定的行將不包含前 32 個或後 128 個 ASCII 字元。當然,行可以 \n 和 \r 結尾,但永遠不要考慮這些字元。 注意點: 不要用 cin,用 getline(),題目輸入測資可能一行含有空格。 map 用完後轉成 vector <pii>,依據題目要求做自訂排序。 範例程式碼: 2025/09/29 修改:改為若非第一組測資就輸出空行,避免 Presentations-Error。 2025/09/29...
【Uva 題庫解題】C++ 個人解題筆記(一顆星選集) - part 4
【Uva 題庫解題】C++ 個人解題筆記(一顆星選集) - part 4 一篇十題讓你看到爽! CPE 49 道必考題,資料來源:https://cpe.mcu.edu.tw/environment.php 31. All You Need Is Love! Uva Online Judge:https://onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=1134 No Zerojudge :( 題目翻譯(From Lucky貓): IBM(International Beautiful Machines)公司發明了一種小玩意兒叫做「愛的算命機」。這台機器會回答你是否非常渴望愛情。這機器運作的情形是:請你輸入一僅含 0 和 1 的字串(稱為 S),機器自己則定義一僅含 0 和 1 的字串(稱為 L,Love 的意思)。然後機器不斷的用 S 去減 L(當然是 2 進位的減法),如果最後可以得到 S = L,代...
【Uva 題庫解題】C++ 個人解題筆記(一顆星選集) - part 3
【Uva 題庫解題】C++ 個人解題筆記(一顆星選集) - part 3 一篇十題讓你看到爽! CPE 49 道必考題,資料來源:https://cpe.mcu.edu.tw/environment.php 21. Symmetric Matrix PDF Source:https://onlinejudge.org/external/113/11349.pdf zerojudge:https://zerojudge.tw/ShowProblem?problemid=e513 題目翻譯: 給定一個正方形矩陣 $M$ 。這矩陣的元素為 $M_{ij} = {0 < i < n, 0 < j < n}$ 。 於本題中你要找到給定的矩陣是否對稱。 定義:對稱矩陣指的是所有元素都是非負的,且相對於矩陣中心對稱的矩陣。其他任何矩陣都被認為是不對稱的。如: 你所要做的就是找出矩陣是否對稱。給定矩陣元素的範圍為 $-2^{32} \leq M_{ij} \leq 2^{32}$ 及 $0 \leq n \leq 100$ 。 精選單字: symmetric (adj...
【Uva 題庫解題】C++ 個人解題筆記(一顆星選集) - part 2
【Uva 題庫解題】C++ 個人解題筆記(一顆星選集) - part 2 一篇十題讓你看到爽! CPE 49 道必考題,資料來源:https://cpe.mcu.edu.tw/environment.php 11. Common Permutation PDF Source:https://onlinejudge.org/external/102/10252.pdf zerojudge:https://zerojudge.tw/ShowProblem?problemid=e507 題目翻譯: 給定由兩個小寫字母組成的字串,a 和 b,請輸出最長的小寫字母字串 x,使得 x 的某個排列是 a 的子序列,且 x 的某個排列也是 b 的子序列。 解題思路: 建立 A、B 字串的頻率表,接著 range-based for loop 判斷頻率++。 common 取最小的頻率,為啥?以下是個例子: 12(a) the(b) street 字母 a b t 1 次 2 次 s 0 次 1 次 h 1 次 0 次 e 1 次 2 次 而這個題目是要求兩個字串中...
【Uva 題庫解題】C++ 個人解題筆記(一顆星選集) - part 1
【Uva 題庫解題】C++ 個人解題筆記(一顆星選集) - part 1 一篇十題讓你看到爽! CPE 49 道必考題,資料來源:https://cpe.mcu.edu.tw/environment.php 1. Vito’sfamily PDF Source:https://onlinejudge.org/external/100/10041.pdf zerojudge:https://zerojudge.tw/ShowProblem?problemid=a737 題目翻譯: 世界知名的黑幫 Vito Deadstone 要搬到紐約了。他在那邊有個大家族,他們全部都住在 Lamafia 大街上。因為他時常要拜訪他所有的親戚,所以他想要找一間離他們很近的房子。 Vito 想最小化與他們的距離和,然後還威脅你要寫個程式幫他解決這個問題。 精選單字: avenue (n.) 大街、大道;方法、途徑、管道 relative (n.) 親戚、親屬 (adj.) 比較的;相對的 解題思路: 首先要搞懂這個距離的定義。題目給定多個門牌號碼 $s_1, s_2, …, s_r$,選定...
【C++】競程筆記(BFS:廣度優先搜尋)
【C++】競程筆記(BFS:廣度優先搜尋) 程式碼範例參考:NTUCPC Guide,此筆記僅為個人學習用途。 流水問題 以 NTUCPC Guide 舉的例子來說的話,水流只能往上下左右流,而且是同時流,然後求每個空地格子幾秒後會有水。 具體做法是先將流水的起點定為 0 秒,之後向上下左右擴散一單位的水並 + 1 秒,注意這邊要做邊界檢查,如下圖的第三張。 Image Source:https://guide.ntucpc.org/AlgorithmTechnique/bfs/ 而在程式設計上,右上角那塊 2 是最容易犯錯的,因為我們都想說上下左右 + 1,第一次寫的時候會沒想到那塊 2 左邊跟下方都有一塊 1,最後加起來還可能會是 3,就比較不合理,這也是要在程式設計上要注意的地方。 以下是有關這個流水問題的範例程式碼(From : NTUCPC Guide | BFS): 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849// from NTUC...
【C++】競程筆記(DFS:深度優先搜尋)
【C++】競程筆記(DFS:深度優先搜尋) 程式碼範例參考:NTUCPC Guide,此筆記僅為個人學習用途。 DFS 的前菜:八皇后問題 Problem : https://zerojudge.tw/ShowProblem?problemid=i644 這題可以透過窮舉法+遞迴(回溯法:Backtracking)的方式去解。 回溯法就是窮舉+遞迴,遇到不可能或失敗的情況後會回退一步,嘗試其他可能的解,直到找到解或全部演算完畢。 八皇后問題的目標是: 在 $8 \times 8$ 的棋盤上放置 $8$ 個皇后,使得任意兩個皇后不會互相攻擊,也就是說: 任意兩個皇后不在同一列(row) 任意兩個皇后不在同一行(column) 任意兩個皇后不在同一條對角線(diagonal) 至於為什麼是這樣?可以參考這篇西洋棋規則:https://blog.udn.com/puzzlez/4342425 解法 由於每列只能放一個皇后,因此可以將問題簡化為每一列放在哪一行。 在這邊開一個陣列 queens[8] 表示整個棋盤,queens[i] = j 表示第 i 列的皇后放在第 j 行。 邏輯...
【C++ 筆記】模板(Templates)(下) - part 32
【C++ 筆記】模板(Templates)(下) - part 32 很感謝你點進來這篇文章。 你好,我並不是什麼 C++、程式語言的專家,所以本文若有些錯誤麻煩請各位鞭大力一點,我極需各位的指正及指導!!本系列文章的性質主要以詼諧的口吻,一派輕鬆的態度自學程式語言,如果你喜歡,麻煩留言說聲文章讚讚吧! 模板特製化(Template Specialization) It is possible in C++ to get a special behavior for a particular data type. This is called template specialization. From GeeksForGeeks 在 C++ 中,可以為特定資料型態賦予特殊的行為,就稱為模板特製化。 簡單來說,就是可以為特定資料型態去做不一樣的事情,如下範例: 1234567891011121314151617181920#include <iostream>using namespace std;template <typename T> void p...
【C++ 筆記】模板(Templates)(上) - part 31
【C++ 筆記】模板(Templates)(上) - part 31 很感謝你點進來這篇文章。 你好,我並不是什麼 C++、程式語言的專家,所以本文若有些錯誤麻煩請各位鞭大力一點,我極需各位的指正及指導!!本系列文章的性質主要以詼諧的口吻,一派輕鬆的態度自學程式語言,如果你喜歡,麻煩留言說聲文章讚讚吧! 先搞懂泛型程式設計 泛型程式設計(Generic programming),是一種程式設計的風格或範式(paradigm)。 :::info 註:最大名鼎鼎的 OOP 也是一種程式設計的範式。 ::: 泛型允許程式設計師在強型別程式設計語言中編寫代碼時使用一些以後才指定的類型,在實例化時作為參數指明這些類型。各種程式語言和其編譯器、執行環境對泛型的支援均不同。Ada、Delphi、Eiffel、Java、C#、F#、Swift 和 Visual Basic .NET 稱之為泛型(generics);ML、Scala 和 Haskell 稱之為參數多型(parametric polymorphism);C++ 和 D稱之為模板。具有廣泛影響的1994年版的《Design Patt...







