鸟哥的Linux私房菜(基础篇)-第零章、计算机概论(零.3)
最近更新日期:2009/08/03 3. 數(shù)據(jù)表示方式
3.1 數(shù)字系統(tǒng)
3.2 文字編碼系統(tǒng)
數(shù)據(jù)表示方式
事實上我們的計算機只認識0與1,記錄的數(shù)據(jù)也是只能記錄0與1而已,所以計算機常用的數(shù)據(jù)是二進位的。但是我們?nèi)祟惓S玫臄?shù)值運算是十進位,文字方面則有非常多的語言,臺灣常用的語言就有英文、中文(又分正體與簡體中文)、日文等。那么計算機如何記錄與顯示這些數(shù)值/文字呢?就得要透過一系列的轉(zhuǎn)換才可以啦!底下我們就來談?wù)剶?shù)值與文字的編碼系統(tǒng)羅!
數(shù)字系統(tǒng)
早期的計算機使用的是利用通電與否的特性的真空管,如果通電就是1,沒有通電就是0,后來沿用至今,我們稱這種只有0/1的環(huán)境為二進位制,英文稱為binary的哩。所謂的十進位指的是逢十進一位,因此在個位數(shù)歸為零而十位數(shù)寫成1。所以所謂的二進位,就是逢二就前進一位的意思。
那二進位怎么用呢?我們先以十進位來解釋好了。如果以十進位來說,3456的意義為:
3456 = 3x103 + 4x102 + 5x101 + 6x100特別注意:『任何數(shù)值的零次方為1』所以100的結(jié)果就是1羅。同樣的,將這個原理帶入二進位的環(huán)境中,我們來解釋一下1101010的數(shù)值轉(zhuǎn)為十進位的話,結(jié)果如下:
1101010=1x26 + 1x25 + 0x24 +1x23 + 0x22 + 1x21 + 0x20= 64 + 32 + 0x16 + 8 + 0x4 + 2 + 0x1 = 106
這樣你了解二進位的意義了嗎?二進位是計算機基礎(chǔ)中的基礎(chǔ)喔!了解了二進位后,八進位、十六進位就依此類推啦!那么知道二進位轉(zhuǎn)成十進位后,那如果有十進位數(shù)值轉(zhuǎn)為二進位的環(huán)境時,該如何計算?剛剛是乘法,現(xiàn)在則是除法就對了!我們同樣的使用十進位的106轉(zhuǎn)成二進位來測試一下好了:
圖3.1.1、十進位轉(zhuǎn)二進位的方法
最后的寫法就如同上面的紅色箭頭,由最后的數(shù)字向上寫,因此可得到1101010的數(shù)字羅!這些數(shù)字的轉(zhuǎn)換系統(tǒng)是非常重要的,因為計算機的加減乘除都是使用這些機制來處理的!有興趣的朋友可以再參考一下其他計算計概論的書籍中,關(guān)於1的補數(shù)/2的補數(shù)等運算方式喔!
文字編碼系統(tǒng)
既然計算機都只有記錄0/1而已,甚至記錄的數(shù)據(jù)都是使用byte/bit等單位來記錄的,那么文字該如何記錄啊?事實上文字檔案也是被記錄為0與1而已,而這個檔案的內(nèi)容要被取出來查閱時,必須要經(jīng)過一個編碼系統(tǒng)的處理才行。所謂的『編碼系統(tǒng)』可以想成是一個『字碼對照表』,他的概念有點像底下的圖示:
圖3.2.1、數(shù)據(jù)參考編碼表的示意圖
當我們要寫入檔案的文字數(shù)據(jù)時,該文字數(shù)據(jù)會由編碼對照表將該文字轉(zhuǎn)成數(shù)字后,再存入檔案當中。同樣的,當我們要將檔案內(nèi)容的數(shù)據(jù)讀出時,也會經(jīng)過編碼對照表將該數(shù)字轉(zhuǎn)成對應(yīng)的文字后,再顯示到螢?zāi)簧稀,F(xiàn)在你知道為何瀏覽器上面如果編碼寫錯時,會出現(xiàn)亂碼了嗎?這是因為編碼對照表寫錯,導(dǎo)致對照的文字產(chǎn)生誤差之故啦!
常用的英文編碼表為ASCII系統(tǒng),這個編碼系統(tǒng)中,每個符號(英文、數(shù)字或符號等)都會占用1bytes的記錄,因此總共會有28=256種變化。至於中文字當中的編碼系統(tǒng)目前最常用的就是big5這個編碼表了。每個中文字會占用2bytes,理論上最多可以有216=65536,亦即最多可達6萬多個中文字。但是因為big5編碼系統(tǒng)并非將所有的位都拿來運用成為對照,所以并非可達這么多的中文字碼的。目前big5僅定義了一萬三千多個中文字,很多中文利用big5是無法成功顯示的~所以才會有造字程序說。
big5碼的中文字編碼對於某些數(shù)據(jù)庫系統(tǒng)來說是很有問題的,某些字碼例如『許、蓋、功』等字,由於這幾個字的內(nèi)部編碼會被誤判為單/雙引號,在寫入還不成問題,在讀出數(shù)據(jù)的對照表時,常常就會變成亂碼。不只中文字,其他非英語系國家也常常會有這樣的問題出現(xiàn)啊!
為了解決這個問題,由國際組織ISO/IEC跳出來制訂了所謂的Unicode編碼系統(tǒng),我們常常稱呼的UTF8或萬國碼的編碼就是這個咚咚。因為這個編碼系統(tǒng)打破了所有國家的不同編碼,因此目前網(wǎng)際網(wǎng)絡(luò)社會大多朝向這個編碼系統(tǒng)在走,所以各位親愛的朋友啊,記得將你的編碼系統(tǒng)修訂一下喔!
出處:http://vbird.dic.ksu.edu.tw/linux_basic/0105computers_3.php
總結(jié)
以上是生活随笔為你收集整理的鸟哥的Linux私房菜(基础篇)-第零章、计算机概论(零.3)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 鸟哥的Linux私房菜(基础篇)-第零章
- 下一篇: 鸟哥的Linux私房菜(基础篇)-第零章