鳥(niǎo)哥的 Linux 私房菜 -- 計(jì)算機(jī)概論 -- 計(jì)算機(jī):輔助人腦的好工具
最近更新日期:2009/08/03
3. 數(shù)據(jù)表示方式
3.1 數(shù)字系統(tǒng)
3.2 文字編碼系統(tǒng)
數(shù)據(jù)表示方式
?
事實(shí)上我們的計(jì)算機(jī)只認(rèn)識(shí)0與1,記錄的數(shù)據(jù)也是只能記錄0與1而已,所以計(jì)算機(jī)常用的數(shù)據(jù)是二進(jìn)位的。
但是我們?nèi)祟惓S玫臄?shù)值運(yùn)算是十進(jìn)位,文字方面則有非常多的語(yǔ)言,臺(tái)灣常用的語(yǔ)言就有英文、中文(又分正體與簡(jiǎn)體中文)、日文等。
那么計(jì)算機(jī)如何記錄與顯示這些數(shù)值/文字呢?就得要透過(guò)一系列的轉(zhuǎn)換才可以啦!底下我們就來(lái)談?wù)剶?shù)值與文字的編碼系統(tǒng)羅!?
數(shù)字系統(tǒng)
?
早期的計(jì)算機(jī)使用的是利用通電與否的特性的真空管,如果通電就是1,沒(méi)有通電就是0,
后來(lái)沿用至今,我們稱這種只有0/1的環(huán)境為二進(jìn)位制,英文稱為binary的哩。所謂的十進(jìn)位指的是逢十進(jìn)一位,
因此在個(gè)位數(shù)歸為零而十位數(shù)寫(xiě)成1。所以所謂的二進(jìn)位,就是逢二就前進(jìn)一位的意思。那二進(jìn)位怎么用呢?我們先以十進(jìn)位來(lái)解釋好了。如果以十進(jìn)位來(lái)說(shuō),3456的意義為:
3456 = 3x10 3 + 4x10 2 + 5x10 1 +
6x10 0特別注意:『 任何數(shù)值的零次方為1 』所以10 0 的結(jié)果就是1羅。
同樣的,將這個(gè)原理帶入二進(jìn)位的環(huán)境中,我們來(lái)解釋一下1101010的數(shù)值轉(zhuǎn)為十進(jìn)位的話,結(jié)果如下:1101010=1x2 6 + 1x2 5 + 0x2 4 +
1x2 3 + 0x2 2 + 1x2 1 + 0x2 0
= 64 + 32 + 0x16 + 8 + 0x4 + 2 + 0x1 = 106這樣你了解二進(jìn)位的意義了嗎?二進(jìn)位是計(jì)算機(jī)基礎(chǔ)中的基礎(chǔ)喔!了解了二進(jìn)位后,八進(jìn)位、十六進(jìn)位就依此類推啦!
那么知道二進(jìn)位轉(zhuǎn)成十進(jìn)位后,那如果有十進(jìn)位數(shù)值轉(zhuǎn)為二進(jìn)位的環(huán)境時(shí),該如何計(jì)算?
剛剛是乘法,現(xiàn)在則是除法就對(duì)了!我們同樣的使用十進(jìn)位的106轉(zhuǎn)成二進(jìn)位來(lái)測(cè)試一下好了:?
圖3.1.1、十進(jìn)位轉(zhuǎn)二進(jìn)位的方法
?
最后的寫(xiě)法就如同上面的紅色箭頭,由最后的數(shù)字向上寫(xiě),因此可得到1101010的數(shù)字羅!
這些數(shù)字的轉(zhuǎn)換系統(tǒng)是非常重要的,因?yàn)橛?jì)算機(jī)的加減乘除都是使用這些機(jī)制來(lái)處理的!
有興趣的朋友可以再參考一下其他計(jì)算計(jì)概論的書(shū)籍中,關(guān)於1的補(bǔ)數(shù)/2的補(bǔ)數(shù)等運(yùn)算方式喔!?
文字編碼系統(tǒng)
?
既然計(jì)算機(jī)都只有記錄0/1而已,甚至記錄的數(shù)據(jù)都是使用byte/bit等單位來(lái)記錄的,那么文字該如何記錄啊?
事實(shí)上文字檔案也是被記錄為0與1而已,而這個(gè)檔案的內(nèi)容要被取出來(lái)查閱時(shí),必須要經(jīng)過(guò)一個(gè)編碼系統(tǒng)的處理才行。
所謂的『編碼系統(tǒng)』可以想成是一個(gè)『字碼對(duì)照表』,他的概念有點(diǎn)像底下的圖示:?
圖3.2.1、數(shù)據(jù)參考編碼表的示意圖
?
當(dāng)我們要寫(xiě)入檔案的文字?jǐn)?shù)據(jù)時(shí),該文字?jǐn)?shù)據(jù)會(huì)由編碼對(duì)照表將該文字轉(zhuǎn)成數(shù)字后,再存入檔案當(dāng)中。
同樣的,當(dāng)我們要將檔案內(nèi)容的數(shù)據(jù)讀出時(shí),也會(huì)經(jīng)過(guò)編碼對(duì)照表將該數(shù)字轉(zhuǎn)成對(duì)應(yīng)的文字后,再顯示到螢?zāi)簧稀?
現(xiàn)在你知道為何瀏覽器上面如果編碼寫(xiě)錯(cuò)時(shí),會(huì)出現(xiàn)亂碼了嗎?這是因?yàn)榫幋a對(duì)照表寫(xiě)錯(cuò),
導(dǎo)致對(duì)照的文字產(chǎn)生誤差之故啦!常用的英文編碼表為ASCII系統(tǒng) ,這個(gè)編碼系統(tǒng)中,
每個(gè)符號(hào)(英文、數(shù)字或符號(hào)等)都會(huì)占用1bytes的記錄,
因此總共會(huì)有2 8 =256種變化。至於 中文字當(dāng)中的編碼系統(tǒng)目前最常用的就是big5這個(gè)編碼表了 。
每個(gè)中文字會(huì)占用2bytes,理論上最多可以有2 16 =65536,亦即最多可達(dá)6萬(wàn)多個(gè)中文字。
但是因?yàn)閎ig5編碼系統(tǒng)并非將所有的位都拿來(lái)運(yùn)用成為對(duì)照,所以并非可達(dá)這么多的中文字碼的。
目前big5僅定義了一萬(wàn)三千多個(gè)中文字,很多中文利用big5是無(wú)法成功顯示的~所以才會(huì)有造字程序說(shuō)。big5碼的中文字編碼對(duì)於某些數(shù)據(jù)庫(kù)系統(tǒng)來(lái)說(shuō)是很有問(wèn)題的,某些字碼例如『許、蓋、功』等字,
由於這幾個(gè)字的內(nèi)部編碼會(huì)被誤判為單/雙引號(hào),在寫(xiě)入還不成問(wèn)題,在讀出數(shù)據(jù)的對(duì)照表時(shí),
常常就會(huì)變成亂碼。不只中文字,其他非英語(yǔ)系國(guó)家也常常會(huì)有這樣的問(wèn)題出現(xiàn)啊!為了解決這個(gè)問(wèn)題,由國(guó)際組織ISO/IEC跳出來(lái)制訂了所謂的 Unicode編碼系統(tǒng),
我們常常稱呼的UTF8或萬(wàn)國(guó)碼的編碼就是這個(gè)咚咚 。因?yàn)檫@個(gè)編碼系統(tǒng)打破了所有國(guó)家的不同編碼,
因此目前網(wǎng)際網(wǎng)絡(luò)社會(huì)大多朝向這個(gè)編碼系統(tǒng)在走,所以各位親愛(ài)的朋友啊,記得將你的編碼系統(tǒng)修訂一下喔!
鳥(niǎo)哥的 Linux 私房菜 -- 計(jì)算機(jī)概論 -- 計(jì)算機(jī):輔助人腦的好工具
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
