『普林斯頓最熱門的電腦通識課』資訊的表示法

更新 發佈閱讀 6 分鐘

基礎的資訊表示法,在越高階的程式語言撰寫中,越無法感覺到它的重要性,反正所有變數就一律宣告長整數或雙倍精度浮點數即可,字串都已經有設計好的 API 進行處理,只要知道怎麼用就好。


但越接近硬體層的操作,就要對這些二進制的表示法越熟悉,例如先前我們曾提過的 SIMD 加速指令集,因為要操作暫存器做多位元組的平行處理,因此就要格外注意變數是宣告為幾個位元組的型別,同時也要確認在計算中會不會溢位,另一個特別但又常見的技巧,就是在有符號數及無符號數之間的轉換或運算,這在一些影像處理中,會有特別應用到的地方。


譬如說我們可以用一個位元組來表示無符號的正整數 0 ~ 255,或是有符號的正整數 -128 ~ 127

這在計算機概論中應該都有學過,但有仔細想過為什麼可以這樣表示嗎?

正數和 的二補數就是該數字本身,同時最高位元為 0;負數的最高位元為 ,其二補數則是將其對應正數按位元取反向再加上 1,其範例如下:


高                          低

0 1 1 1 1 1 1 1 = 127

0 0 0 0 0 0 1 0 = 2

0 0 0 0 0 0 0 1 = 1

0 0 0 0 0 0 0 0 = 0

1 1 1 1 1 1 1 1 = −1

1 1 1 1 1 1 1 0 = −2

1 0 0 0 0 0 0 1 = −127

1 0 0 0 0 0 0 0 = −128


於是乎,當我們用無符號的正整數計算到飽和時,再用有符號的正整數做型別轉換,則 255 會被轉換成 -1;根據類似的特性,在一些加速的應用上就可能看到有符號跟無符號數轉來轉去。


同樣重要地,還有 ASCII 跟 Unicode,常有人在應用字串類別時,被這兩種標準碼的轉換搞的暈頭轉向。


當我們應用電腦來處理數位資料變成一種習慣時,就會理所當然的認為這些資料本來就該是數位表示(離散值),殊不知在自然界中的訊號都是類比訊號(連續值),是人類因應電腦計算的方便性,將類比訊號透過「取樣」及「量化」後,才變成數位訊號。


這個轉換過程可以在數位訊號處理的課程中學習如何進行轉換,而在電子產品中,常見所謂的 ADC 轉換器或是 ADC IC,這都是用來將類比訊號轉換成數位訊號的常用元件。


如文中所說的「數位影像」,要將感光陣列中光強所轉化的電荷量變成數位訊號,就需要高速的ADC 來進行訊號處理。

總之,當我們已經習慣用數位資料來表示的時候,也不要忘記真實世界依然是類比連續的。


本章節重點摘要如下:

  • 電腦用三個基本概念來表達資訊:
  1. 電腦是「數位處理器(digital processor)」,它們儲存及處理分批進來的「離散值(discrete values,不連續值)」。
  2. 電腦以「位元」來表達資訊,一個位元是二進位,不是 就是 1
  3. 位元組代表更大的東西。數字、字母、文字、聲音、圖片與電影等,全都是以「位元組」表示。
  • 我們的世界是「類比(analog)」的,意指一個東西的數值平滑地隨著另一個東西的變化而變化;然而,現代技術大多是數位表示,在輸入端就要轉換成數位形式,然後輸出端轉回類比形式。
電腦易於處理數位資料,且數位系統比類比系統更容易延伸擴充。
  • 透過「取樣」跟「量化」技術,類比訊號能夠轉換成數位訊號,以類比照片跟數位照片為例說明:
  1. 類比照片,把化學塗層的底片感光區域曝光於來自被拍攝物體的光線,不同區域接收到不同量的不同顏色,這影響到底片上的染料;拍照後的底片經過複雜的化學流程,顯影及曬印於相紙上,各種量的彩色染料產生不同的顏色。
  2. 數位相片,鏡頭把影像聚焦到位於紅色、綠色及藍色濾鏡後方的矩形感光陣列上,每一個感光區域儲存一個電荷量,這電荷量與感光區域的感光量成比例;這些電荷轉換成數值,相片的數位形式就是代表光強度數值的序列。若感光陣列的數量越多,電荷量的轉換更準確,數位化影像對原始圖像的捕捉就更精確。
  • 有些資訊適合用數位形式表示,例如文字、數字及標點符號等,可以對每一個字母指定一個代表數字,例如 A 是 1是 等。這就是一個很好的數位表示形式。
在標準的表示法中,A 到 Z 是 65 到 90、a 到 z 是97 到 122、0 到 9 是 48 到 57;其它字符如標點符號就是用別的數值代表。這稱為美國資訊交換標準代碼(American Standard Code for Information Interchange, ASCII)。
  • 不同地區或語言有不同交換標準代碼,但現在趨同名為「統一碼 (Unicode)」 的單一標準。
  • 二進制表示,就是 進 1,跟人類常用的十進制有所差異。
數位資訊是用位元 (bit) 表示,這是 binary digit 的縮寫。
  • 由於電腦裡的每個東西都是以二進制來處理,大小與容量之類的屬性往往用 的冪次值來表示。
十進制的 1867 可以轉換成二進制的 11101001011 → 1867 = 2^10 + 2^9 + 2^8 + 2^6 + 2^3 + 2^1 + 2^0。
  • 現代電腦中,處理和記憶組織的基本單位是八個位元,八個位元被當成一個位元組(byte)。一個位元組能編碼 256 個不同值(2^8,全都是 0 和 1 的組合)。
  • 四個位元組可以表示四個 ASCII 字元,或兩個 Unicode 字元。
程式設計師常會用到「十六進制」,因為二進數太長了,其表示方式如下:

0  0000   

1  0001   

2  0010   

3  0011

4  0100   

5  0101   

6  0110   

7  0111

8  1000   

9  1001   

A  1010   

B  1011

C  1100   

D  1101   

E  1110   

F  1111

  • 打造只有兩種狀態 (例如開與關) 的設備相對簡單,例如電流 (流動或不流動)、電壓 (高或低)、電荷 (存在或不存在)、磁力 (北或南)、光線 (亮或暗),反射率 (閃亮或不敏感)。
  • 電腦是以二進制資料進行處理,因此我們才需要了解二進制。 
留言
avatar-img
留言分享你的想法!
avatar-img
一個工程師的創業之旅的沙龍
73會員
442內容數
閱讀可以用最低的成本來獲得別人經驗,培養閱讀能力,一生受益。但要記住,別只讓自己的大腦永遠處於「輸入狀態」,要適當地「輸出」自己的想法。透過閱讀輸入,再利用寫作輸出,就像「費曼學習法」說的一樣,教授到別人能夠了解,自己才算是領悟了這門學問。
2024/04/04
電腦的邏輯或功能性架構包含:處理器(processor)、主記憶體(primary memory)、輔助儲存器(secondary storage),以及其他元件,全部都由一個名為匯流排 (bus)的線路連結,這些線路在它們之間傳輸資訊。
Thumbnail
2024/04/04
電腦的邏輯或功能性架構包含:處理器(processor)、主記憶體(primary memory)、輔助儲存器(secondary storage),以及其他元件,全部都由一個名為匯流排 (bus)的線路連結,這些線路在它們之間傳輸資訊。
Thumbnail
2024/03/27
「資料探勘」早在十幾年前唸書時就有耳聞,但資料科學倒是近五年來才知道有這門學科。就我的理解來說,資料探勘就是如何從大量資料中找出有用的資訊,而「資料科學」就是利用這些有用的資訊來做分析,從而達到預測的目的。
Thumbnail
2024/03/27
「資料探勘」早在十幾年前唸書時就有耳聞,但資料科學倒是近五年來才知道有這門學科。就我的理解來說,資料探勘就是如何從大量資料中找出有用的資訊,而「資料科學」就是利用這些有用的資訊來做分析,從而達到預測的目的。
Thumbnail
2024/02/21
現代的計算機概論範圍也越來越廣了,從傳統的「硬體」、「軟體」到「通訊」及「資料」等;其中,通訊現在應該算獨立於計算機之外自成一派。而資料科學則在近十年「機習學習」或「深度學習」變成顯學後,受到高度重視。不想變成時代的眼淚,還請多努力,別輕易躺平。
Thumbnail
2024/02/21
現代的計算機概論範圍也越來越廣了,從傳統的「硬體」、「軟體」到「通訊」及「資料」等;其中,通訊現在應該算獨立於計算機之外自成一派。而資料科學則在近十年「機習學習」或「深度學習」變成顯學後,受到高度重視。不想變成時代的眼淚,還請多努力,別輕易躺平。
Thumbnail
看更多
你可能也想看
Thumbnail
這篇內容,將會講解什麼是運算子,以及與運算子相關的知識。包括運算子的簡介、賦值運算子、算術運算子、遞增/遞減、比較運算子、邏輯運算子。
Thumbnail
這篇內容,將會講解什麼是運算子,以及與運算子相關的知識。包括運算子的簡介、賦值運算子、算術運算子、遞增/遞減、比較運算子、邏輯運算子。
Thumbnail
本文介紹了在進行資料分析時,將類別欄位轉換為數值欄位的方法,包括Label Encoding、One-Hot Encoding、Binary Encoding、Target Encoding和Frequency Encoding。每種方法的應用範例、優缺點和適用場景都有詳細說明。
Thumbnail
本文介紹了在進行資料分析時,將類別欄位轉換為數值欄位的方法,包括Label Encoding、One-Hot Encoding、Binary Encoding、Target Encoding和Frequency Encoding。每種方法的應用範例、優缺點和適用場景都有詳細說明。
Thumbnail
這篇內容,將會講解什麼是資料型態,以及與資料型態相關的知識。包括資料型態的簡介、實數、布林值、 字串、陣列。
Thumbnail
這篇內容,將會講解什麼是資料型態,以及與資料型態相關的知識。包括資料型態的簡介、實數、布林值、 字串、陣列。
Thumbnail
這篇內容,將會講解什麼是變數,以及與變數相關的知識。包括變數、資料型態、變數賦值、變數的命名規則、變數的作用區域、變數的可重複性、內建變數。
Thumbnail
這篇內容,將會講解什麼是變數,以及與變數相關的知識。包括變數、資料型態、變數賦值、變數的命名規則、變數的作用區域、變數的可重複性、內建變數。
Thumbnail
在本章節中,我們將學習JavaScript的基本語法,包括如何註解代碼和如何聲明變數。瞭解這些基礎知識對於進一步學習和使用JavaScript來編寫代碼是非常重要的。
Thumbnail
在本章節中,我們將學習JavaScript的基本語法,包括如何註解代碼和如何聲明變數。瞭解這些基礎知識對於進一步學習和使用JavaScript來編寫代碼是非常重要的。
Thumbnail
電腦只做一件事情: 運算。 我們所看到的任何酷酷的應用: 不論是網頁動畫、遊戲特效、甚至是 AI 說的話,全部都 是由電腦的運算結果組合而成的。 首先我們來梳理一下各個名詞之間的關聯: 1. 運算分成兩個部分: 運算子 (運算的名稱,如: 加法) 和運算元 (運算的對象,如: 8)。運算就是對資
Thumbnail
電腦只做一件事情: 運算。 我們所看到的任何酷酷的應用: 不論是網頁動畫、遊戲特效、甚至是 AI 說的話,全部都 是由電腦的運算結果組合而成的。 首先我們來梳理一下各個名詞之間的關聯: 1. 運算分成兩個部分: 運算子 (運算的名稱,如: 加法) 和運算元 (運算的對象,如: 8)。運算就是對資
Thumbnail
解決電腦上遇到的問題、證明正確性、探討效率 並且很著重溝通,說服別人你做的事是正確且有效率的。 內容: 計算模型、資料結構介紹、演算法介紹、時間複雜度介紹。
Thumbnail
解決電腦上遇到的問題、證明正確性、探討效率 並且很著重溝通,說服別人你做的事是正確且有效率的。 內容: 計算模型、資料結構介紹、演算法介紹、時間複雜度介紹。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News