【C++ 筆記】bitset 容器,C++ 二進位運算的絕佳利器
【C++ 筆記】bitset 容器,C++ 二進位運算的絕佳利器 很感謝你點進來這篇文章。 你好,我並不是什麼 C++、程式語言的專家,所以本文若有些錯誤麻煩請各位鞭大力一點,我極需各位的指正及指導!!本系列文章的性質主要以詼諧的口吻,一派輕鬆的態度自學程式語言,如果你喜歡,麻煩留言說聲文章讚讚吧! 什麼是 bitset? std::bitset<N> 是 C++ STL(位於標頭檔 <bitset>)中,一個用來表示固定長度為 $N$ 位元(bits)的位元序列(bit sequence)的類別模版。 假設 $N = 16$ ,那就表示有 16 位元,數字 1 就會表示成 “0000000000000001”。 bitset 也是 C++ 當中的一種容器,這個容器能夠做到單獨、有效的去操作每一個位元,也能解決位元運算、實現二進位表示法的工具,這也是為什麼需要用到它的原因。 使用 bitset bitset 在使用之前需要引入標頭檔 <bitset>,另外以下是其基本語法: 1bitset<n> name; 其中 n 是固定的位元數...
Linux chmod、chgrp、chown 權限管理筆記
Linux chmod、chgrp、chown 權限管理筆記 感謝您點進本篇文章,我是 LukeTseng,近期接觸到 Linux 系統,時常需要面對黑色終端機,有些時候想做到一些操作,卻也不知道那個指令叫什麼,我也沒有好好奠基 Linux 的基礎指令,所以特此製作本篇文章!希望能解決到你我的痛點! 若本篇文章某處有誤,敬請告知,感謝! Linux 檔案、目錄權限 Linux 的檔案權限分為三個層級: 擁有者(Owner/User, u):檔案的所有者。 群組(Group, g):與檔案擁有者同群組的使用者。 其他人(Others, o):系統上其他所有使用者。 每個層級可以設定三種權限: r(read, 讀取):數字值為 4,可以查看檔案內容或列出目錄內容。 w(write, 寫入):數字值為 2,可以修改檔案或在目錄中新增 / 刪除檔案。 x(execute, 執行):數字值為 1,可以執行檔案或進入目錄。 當在輸入 ls -l 時,會列出像以下這些東西: 其中 drwxr-xr-x 就是檔案或目錄的權限,可以分成三個部分來看: 12d rwx r-x r-x1 2...
那些你不能不會的 Linux 基礎指令!(下)
那些你不能不會的 Linux 基礎指令!(下) 感謝您點進本篇文章,我是 LukeTseng,近期接觸到 Linux 系統,時常需要面對黑色終端機,有些時候想做到一些操作,卻也不知道那個指令叫什麼,我也沒有好好奠基 Linux 的基礎指令,所以特此製作本篇文章!希望能解決到你我的痛點! 若本篇文章某處有誤,敬請告知,感謝! 萬用字元(Wildcard) 最常見的就是 * 跟 ? 這兩個字元。 * 代表「任意長度的任意字元」,可以是 0 個、1 個或多個字元。 範例如下: ls *:列出目前目錄下所有非隱藏檔案。 以下是 ls * 跟 ls 的差別: ls *.txt:列出所有副檔名為 .txt 的檔案(如 a.txt、b.txt)。 ls a*:列出所有以 a 開頭的檔案(如 apple、a.txt)。 ls *a*:列出所有檔名裡面有包含 a 這個字元的檔案。 下圖中使用 ls *a* 就找到 abcdefg、alphafile … 以及 snap 目錄底下的 firmware-updater 跟 snapd-desktop-integration 檔案。...
那些你不能不會的 Linux 基礎指令!(上)
那些你不能不會的 Linux 基礎指令!(上) 感謝您點進本篇文章,我是 LukeTseng,近期接觸到 Linux 系統,時常需要面對黑色終端機,有些時候想做到一些操作,卻也不知道那個指令叫什麼,我也沒有好好奠基 Linux 的基礎指令,所以特此製作本篇文章!希望能解決到你我的痛點! 若本篇文章某處有誤,敬請告知,感謝! 一個點跟兩個點的意義 一個點 . 在 Linux 中代表當前目錄的意思,兩個點 .. 則為上一個目錄。 檔案與目錄操作 ls 首先要介紹的是 ls 指令,英文全名是 list directory contents,主要是用來「列出目前目錄下的所有檔案與資料夾名稱(不含隱藏檔案)」,作用同於 Windows 系統的 dir 指令。 基本語法如下: 1ls [options] [files or directories] options 則為可選的參數,可加可不加。 若直接 ls 該檔案名稱時,會直接顯示檔案名稱,若沒有找到則會顯示 "No such file or directory"。 而 ls 目錄,則會顯示該目錄裡面的所有檔案與資料夾名...
【Python 網路爬蟲筆記】Selenium Library、爬取 Hackmd 文章專題 - part 4
【Python 網路爬蟲筆記】Selenium Library、爬取 Hackmd 文章專題 - part 4 感謝你點進本篇文章!!我是 LukeTseng,一個熱愛資訊的無名創作者,由於近期大學開設大數據分析程式設計這門課程,裡面談到了爬蟲概念,讓我激起一些興趣,因而製作本系列筆記。 聲明:本篇筆記僅供個人學習用途,斟酌參考。 本篇筆記使用 Jupyter Notebook,搭載 Anaconda 虛擬環境,如需下載者可至該網址:https://www.anaconda.com/download 安裝 Selenium 模組 透過以下指令: 1pip install selenium 在 Jupyter Notebook(安裝完後記得 Restart Kernel 才會啟用): 1!pip install selenium 什麼是 Selenium? Selenium 是一種開源的網頁瀏覽器自動化工具,可以透過程式碼來模擬 user 在瀏覽器上的各種操作(像人一樣),從而完成自動化測試或網頁爬蟲任務。 Selenium 就是動態爬蟲中應用到最重要的技術。 Selenium 用...
【Leetcode C++ 解題筆記】Stack - part 3
【Leetcode C++ 解題筆記】Stack - part 3 本筆記僅供個人學習用途,內容斟酌參考。 20. Valid Parentheses Problem Source:https://leetcode.com/problems/valid-parentheses/description/?envType=problem-list-v2&envId=stack 難度:Easy 題目就是要你對這三個括號 ( [ { 去做匹配,就是要成對的括號,然後輸出 true,否則為 false。 這一道題目是非常經典的 Stack 題,務必要學會。 解題思路(0 ms): 用 C++ STL 內建的容器 stack <char> result,遍歷字串 s 的所有字元,如果遇到左括號就先堆進來,不是的話檢查是不是空的以及堆疊頂端是否為該括號的左括號,如果兩者擇一是的話就回傳 false,表示這是不合法的。 範例程式碼: 12345678910111213141516171819202122class Solution {public: ...
【Uva 解題筆記】12149 - Feynman
【Uva 解題筆記】12149 - Feynman Uva Online Judge:https://onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3301 Zerojudge:https://zerojudge.tw/ShowProblem?problemid=a111 PDF Source:https://onlinejudge.org/external/121/12149.pdf 題目翻譯: 理查·菲利普斯·費曼(Richard Phillips Feynman)是一位著名的美國物理學家,也是諾貝爾物理學獎得主。他從事理論物理學研究,同時也開創了量子計算領域。他曾到南美洲待了十個月,在熱帶地區演講並享受生活。他也以他的著作「別鬧了,費曼先生!」和「你管別人怎麼想?」而聞名,這些書中包含了一些他在赤道以下的冒險經歷。 他一生都熱衷於解謎題、製作鎖和密碼。最近,一位曾在 1949 年接待這位年輕物理學家的南美洲老農夫,找到了一些被認為...
【Uva 解題筆記】12015 - Google is Feeling Lucky
【Uva 解題筆記】12015 - Google is Feeling Lucky Uva Online Judge:https://onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3166 Zerojudge:https://zerojudge.tw/ShowProblem?problemid=a130 PDF Source:https://onlinejudge.org/external/120/12015.pdf 題目翻譯: Google 是最著名的網際網路搜尋引擎之一,它提供和開發了許多網路服務和產品。在其搜尋引擎網站上,有一個有趣的按鈕「好手氣」吸引了我們的目光。這個功能讓使用者可以跳過搜尋結果頁面,直接進入首選頁面。這太省事了,節省了大量時間。 問題是,當使用者輸入一些關鍵字並按下「好手氣」按鈕時,會出現哪個網頁呢?Google 做了很多工作,並提出了優秀的方法來處理這個問題。在這個簡化的問題中,讓我們只考慮 Google 為...
什麼是 Hamming Code(漢明碼)?
什麼是 Hamming Code(漢明碼)? 歡迎你點入本篇文章,會促成我想做這篇的原因,主要是因為在上計概時,突然浮現很多靈感,跟一大堆的問題(教授,為什麼要講的這麼淺白呢?我想知道更多啊啊!),為了一次解決我所有的困惑,於是製作本篇文章。 若文章有任何疑點及錯誤的地方歡迎提出。 為什麼需要這個東東? 在資料傳輸或儲存的過程中,位元(bit)可能因雜訊、干擾或硬體錯誤而被翻轉(做補數 0 -> 1, 1-> 0),導致資料錯誤。為了解決這個問題,1950 年代美國數學家 Richard Wesley Hamming 發明了 Hamming Code(漢明碼)。 Hamming Code 是一種錯誤偵測與單一錯誤修正(Single Error Correction, SEC)的編碼機制,在傳輸資料時會加入一些額外的同位元(parity bits),使接收端能判斷是否發生錯誤,並自動修正錯誤的位元。 若結合奇偶校驗位(overall parity bit),還可以達到 SECDED:Single Error Correction, Double Error Detect...
什麼是 CRC(Cyclic Redundancy Check)檢測?
什麼是 CRC(Cyclic Redundancy Check)檢測? 歡迎你點入本篇文章,會促成我想做這篇的原因,主要是因為在上計概時,突然浮現很多靈感,跟一大堆的問題(教授,為什麼要講的這麼淺白呢?我想知道更多啊啊!),為了一次解決我所有的困惑,於是製作本篇文章。 若文章有任何疑點及錯誤的地方歡迎提出。 CRC 是啥?能吃嗎? CRC 的中文全名叫做循環冗餘校驗(Cyclic Redundancy Check, CRC),是一種廣泛應用於數位網路和儲存裝置中的錯誤偵測碼,用於檢測數據傳輸或儲存後可能出現的意外變化。 這種 CRC 校驗的方法是由 W. Wesley Peterson 這個人在 1961 年所發表的。 CRC 的核心概念是在發送端(Sender)根據要傳送的數據,按照特定規則產生一個固定位數的校驗碼(也稱為檢查和),將其附加在原始數據(Original Data)後面一起傳送。接收端(Receiver)收到數據後,使用相同的算法重新計算校驗碼,並與接收到的校驗碼進行比對。如果兩者一致,則該數據傳輸正確;若不一致,則表示這個數據在傳輸過程中發生了錯誤。 總之呢,C...
【Uva 解題筆記】494 - Kindergarten Counting Game
【Uva 解題筆記】494 - Kindergarten Counting Game Uva Online Judge:https://onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=435 Zerojudge:https://zerojudge.tw/ShowProblem?problemid=a011 PDF Source:https://onlinejudge.org/external/4/494.pdf 題目翻譯: 每個人圍成一圈坐下。好的,仔細聽我說。 “Woooooo, you screwy wabbit!” 現在,能有人告訴我我剛說了多少個字嗎? Input 程式的輸入將由一系列的行組成,每一行包含多個單字(至少一個)。一個「單字」的定義是連續的字母序列(大寫和/或小寫字母)。 Output 你的程式應該要輸出每一行輸入的單字數量。每個單字計數應該印在單獨的一行上。 Sample Input 1234Meep Meep!I ...
基礎邏輯電路(下)
基礎邏輯電路(下) 歡迎你點入本篇文章,會促成我想做這篇的原因,主要是因為在上計概時,突然浮現很多靈感,跟一大堆的問題(教授,為什麼要講的這麼淺白呢?我想知道更多啊啊!),為了一次解決我所有的困惑,於是製作本篇文章。 若文章有任何疑點及錯誤的地方歡迎提出。 本篇文章主要作為個人學習用途,撰筆形式概要以筆記形式撰筆。另外本篇文章以入門為導向,若需詳細閱讀相關學門,請搜尋「數位系統導論」或「數位系統設計」。 Sum of Products(SOP) Form 先做 AND 運算,再做 OR 運算。 如: $(A \cdot B) + (C \cdot D) + \cdots$ 主要是用 $+$ 號連接多項 Products,下圖可能會比較清晰一點。 Image Source:What is Sum Of Product (SOP) Form? - GeeksforGeeks 為什麼需要 SOP?因為可以從真值表直接算出布林運算式,接著進一步簡化可畫出電路圖,這是一種蠻好的方式。 最小項(Minterm) 最小項是構成 SOP 的基本單位,是一個 AND 項(積項),具有以下特點: ...
基礎邏輯電路(上)
基礎邏輯電路(上) 歡迎你點入本篇文章,會促成我想做這篇的原因,主要是因為在上計概時,突然浮現很多靈感,跟一大堆的問題(教授,為什麼要講的這麼淺白呢?我想知道更多啊啊!),為了一次解決我所有的困惑,於是製作本篇文章。 若文章有任何疑點及錯誤的地方歡迎提出。 本篇文章主要作為個人學習用途,撰筆形式概要以筆記形式撰筆。另外本篇文章以入門為導向,若需詳細閱讀相關學門,請搜尋「數位系統導論」或「數位系統設計」。 布林代數式(Boolean Algebra) Boolean Algebra 是數學當中的一個分支,專門用來處理 0 跟 1 這種真(True)假(False)值。主要針對二進位變數以及邏輯運算,如最基礎的 AND、OR、NOT。 邏輯運算(Logical Operations) AND or Conjunction(關聯) OR or Disjunction(無關) NOT or Negation(否定) AND 用布林代數式可表示為 $A \cdot B$ 或是 $A \wedge B$ 。 OR 用布林代數式可表示為 $A + B$ 或是 $A \lor B$ 。 NO...
【Python 筆記】正規運算式(Regular Expression)
【Python 筆記】正規運算式(Regular Expression) 感謝您點進本篇文章,本篇文章為我 LukeTseng 個人首篇 Python 筆記系列文章,主要記錄我個人學習軌跡,所有內容皆用於個人學習用途,斟酌參考。若文章有任意處有誤,煩請各位指點,謝謝。 簡介 這東西的名字很多,有什麼正規表達式、正規表示法、規則運算式、常規表示法等等,我個人比較習慣叫他是正規運算式,總之他的名字就是 Regular Expression(簡稱 RE、regex)就對了,在這之後我都叫他是 regex 縮寫。 regex 是一套用來描述和比對字串樣式規則的「語法」或「表示法」,通常被嵌入在各大程式語言當中,例如我們最愛用的 Python 就是其一。regex 在處理和解析字串方面十分強大,因此也是我們要學習的對象。 你可能想說在 notepad 裡面就可以用搜尋、取代這些功能了,為什麼還需要 regex?因為 regex 他不只是只有搜尋、取代這些功能而已,他還有篩選的功能,例如可以篩出特定字元、字串,以此來找到電子郵件格式及電話號碼。 在 Python 使用 regex 1impo...
什麼是奇偶校驗?(Parity Bit)
什麼是奇偶校驗?(Parity Bit) 歡迎你點入本篇文章,會促成我想做這篇的原因,主要是因為在上計概時,突然浮現很多靈感,跟一大堆的問題(教授,為什麼要講的這麼淺白呢?我想知道更多啊啊!),為了一次解決我所有的困惑,於是製作本篇文章。 若文章有任何疑點及錯誤的地方歡迎提出。 Parity Bit Parity bit(同位位元 or 奇偶校驗位)為最簡單且廣泛使用的錯誤檢測方法,透過在資料中增加一個額外的位元來檢測傳輸或儲存過程中是否發生錯誤。這個概念在現代計算機系統與串列通訊中扮演著重要的角色。 From Wikibooks : https://zh.wikibooks.org/zh-tw/嵌入式系统/奇偶校验 原理 做奇偶校驗前先計算二進位中 1 的個數,在 1 byte 中,通常有 7 bits 用於實際資料,第 8 個 bit 用來當作檢查位(或稱校驗位)。檢查位的值會根據其他 7 個 bits 中「1」的個數來決定,使整個 byte 中 1 的總數保持為奇數或偶數。 也就是說如果要做偶校驗,假設這 1 byte 的資料裡面 1 的數量有 5 個,由於是做偶校驗,...







