iT邦幫忙

2023 iThome 鐵人賽

DAY 8
0

https://ithelp.ithome.com.tw/upload/images/20230921/20149362Ky9VOVoEqT.jpg
想像一下,你現在有個任務
就是要嘗試用「文字」去描述電影裡的所有場景、描述居住城市的所有街道,這個文字只能用「0」、「1」去表示
當你每天使用電腦在看視頻、聽音樂、導航時,以上這也正是你的電腦正在做的事情,而它使用的代碼叫做 二進制代碼(Binary Code)

為什麼電腦要使用二進制?WHY?

就開門見山的說,因為這是個可靠且穩定的儲存資料的方法
為何可靠又穩定?? 下面來舉個例子說明

主記憶體是由可以切換高電壓或低電壓的「電晶體」所組成,電壓是會擺動的,但對電腦來說他就只認得兩種情況,分別是高電壓(high)和低電壓(low),或是開(on)和關(0ff)。CPU 會去解讀現在的電壓狀態是屬於高還是低(開或是關),也就是它會利用電晶體的狀態進一步去操控電腦的其他元件
https://ithelp.ithome.com.tw/upload/images/20230920/20149362yaMI8T0bCb.png

不論今天要儲存的資料是什麼類型,mp4, mp3, png, jpg, pixel, number, text等,電腦都不需要預先去判斷和解讀資料類型,因為它都會根據一套規則把資料編成二進制的序列(binary sequence),在電腦的世界就是那麼單純,只有「0」和「1」的存在,單位是位元 (bit)

0 => 關 => false
1 => 開 => true

位元(Bit) & 位元組(Byte)

「位元」又叫做 Binary digit,是指二進制中的其中一位(0或1),也是資料儲存和傳遞的最小單位
早期的電腦以 8 個位元為存取單位,因此 8 bits = 1 byte,由於電腦的存取機制是以位元組為單位,所以表示資料所需的為位元數通常是8、16、32

這裡要來算一下數學
兩個位元可以有多少種不同的排列組合呢? 答案是4種 (00、01、10、11)
上面提到8 bits = 1 byte,也就是有 2 ^ 8 = 256 種 排列組合,這樣的組合足以表示每一個英文字母(大小寫)、數字和標點符號,ASCII 就是這類型組合的公定標準

我們如果要表示更大的資料,那就再增加位元數就好
為了避免各國間的位元表示方式打架,以及不同電腦系統和程式語言之間的字元編碼不一致問題,萬國碼(Unicode)就出現了,他是一套字元編碼標準,讓在不同的電腦和作業系統間能順暢的交換文字資料

十進制 && 六十進制

先講這兩種進制,身為人類,你一定都不陌生
十進制主要是以 0-9 的數字表示,以10的次方為基底,之所以能延續到現在,跟我們有十根手指頭有很大的關係(沒在唬爛😂),如果你有看過小孩算數,數到 11 的時候,他們的可愛手指頭就瞬間進位,變成1跟手指頭去表示
https://ithelp.ithome.com.tw/upload/images/20230920/20149362r0Bz0vtxG7.jpg

六十進制則常用在時間上,像是每分鐘 60 秒,每小時 60 分鐘,除此之外,已經很少應用場景

84 如果用十進制表示會是: 8 X 10 ^ 1 + 4 X 10 ^ 0
https://ithelp.ithome.com.tw/upload/images/20230920/20149362kXyDUCqibB.png

你會好奇為什麼會從0次方開始,接著1次方、2次方...以此類推嗎?
比如今天有個數字 168 ,可以把它拆解為 1 個一百 + 6 個十 + 8 個一
100's | 10's | 1's
------------- | -------------
1 | 6 | 8

從右到左來看,每跨一個欄位就會乘以10倍,這就是十進位的運作,他是以十的倍數為基底,二進制的概念也是如此

二進制

每個位數以2的次方為基底,像是上面舉例的 84,用二進制表示就是

https://ithelp.ithome.com.tw/upload/images/20230920/20149362qe10ZkA4z2.png
https://ithelp.ithome.com.tw/upload/images/20230920/20149362wIRicZ0BPq.png

除了數字,字母的表示就無法用數學算出來了,那麼他怎麼被編制的呢?
是以 UTF-8 為標準被編譯,如下圖:
https://ithelp.ithome.com.tw/upload/images/20230920/201493629U5rtaqT8U.png

你有發現字母T和上面的84其實是一樣的嗎?都是 01010100 (貓貓圖上面的圖片少一個位元,這裡可以先不用管XD)
電腦要如何分辨 01010100 究竟是 binary number 或 binary text 呢?
其實...對他來說都一樣!!
電腦沒有辦法單獨的從序列就知道這是表示什麼,像是我們不能以「手足」兩個字就知道是在講兄弟姐妹還是在講我的手和腳,必須依照前後文的語意來判斷才行

小試身手(答案放在留言處)

  1. 183 用二進位表示是多少
  2. 19 用二進位表示是多少
  3. 183 + 19 的答案用二進位表示是多少

PS. 若有解說不清或是不正確之處,歡迎指教/images/emoticon/emoticon41.gif

總結

電腦的世界很只有「0」和「1」的存在,是以二進制的方式在運作,最小單位是位元 (bit),而 8 個位元又稱為一個位元組(byte)。我們的生活也跟進制息息相關,像是加法是十進制、時間的表示則是六十進制。如果說電腦的世界很單純,那麼人類的世界還真是複雜呀~

參考資料

  1. Crash Course Computer Science #4
  2. wikipedia

上一篇
Day 7 |【購買筆電必看】 如何挑選CPU?效能指標有哪些
下一篇
Day 9|電腦如何表示整數? 整數表示法 - 一補數、二補數
系列文
來場計概入門課吧X資訊人該了解的通識素養31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
hannnahTW
iT邦新手 3 級 ‧ 2023-09-23 00:21:15
  1. 183 用二進位表示 => 10110111
  2. 19 用二進位表示 => 00010011
  3. 183 + 19 的答案用二進位表示 => 11001010

我要留言

立即登入留言