ASCII編碼與Unicode編碼
下文將為大家介紹關(guān)于ASCII編碼與Unicode編碼,歡迎學(xué)習(xí)!
ASCII編碼與Unicode編碼
ASCII碼
我們知道,一個(gè)二進(jìn)制位(Bit)有0、1兩種狀態(tài),一個(gè)字節(jié)(Byte)有8個(gè)二進(jìn)制位,有256種狀態(tài),每種狀態(tài)對(duì)應(yīng)一個(gè)符號(hào),就是256個(gè)符號(hào),從00000000到11111111。
計(jì)算機(jī)誕生于美國(guó),早期的計(jì)算機(jī)使用者大多使用英文,上世紀(jì)60年代,美國(guó)制定了一套英文字符與二進(jìn)制位的對(duì)應(yīng)關(guān)系,稱為ASCII碼,沿用至今。
ASCII碼規(guī)定了128個(gè)英文字符與二進(jìn)制的對(duì)應(yīng)關(guān)系,占用一個(gè)字節(jié)(實(shí)際上只占用了一個(gè)字節(jié)的后面7位,最前面1位統(tǒng)一規(guī)定為0)。例如,字母 a 的的ASCII碼為 01100001,那么你暫時(shí)可以理解為字母 a 存儲(chǔ)到內(nèi)存之前會(huì)被轉(zhuǎn)換為 01100001,讀取時(shí)遇到 01100001 也會(huì)轉(zhuǎn)換為 a。
Unicode編碼
隨著計(jì)算機(jī)的流行,使用計(jì)算機(jī)的人越來(lái)越多,不僅限于美國(guó),整個(gè)世界都在使用,這個(gè)時(shí)候ASCII編碼的問(wèn)題就凸現(xiàn)出來(lái)了。
ASCII編碼只占用1個(gè)字節(jié),最多只能表示256個(gè)字符,我大中華區(qū)10萬(wàn)漢字怎么表示,日語(yǔ)韓語(yǔ)拉丁語(yǔ)怎么表示?所以90年代又制定了一套新的規(guī)范,將全世界范圍內(nèi)的字符統(tǒng)一使用一種方式在計(jì)算機(jī)中表示,這就是Unicode編碼(Unique Code),也稱統(tǒng)一碼、萬(wàn)國(guó)碼。
Unicode 是一個(gè)很大的集合,現(xiàn)在的規(guī)?梢匀菁{100多萬(wàn)個(gè)符號(hào),每個(gè)符號(hào)的對(duì)應(yīng)的二進(jìn)制都不一樣。Unicode 規(guī)定可以使用多個(gè)字節(jié)表示一個(gè)字符,例如 a 的編碼為 01100001,一個(gè)字節(jié)就夠了,”好“的編碼為 01011001 01111101,需要兩個(gè)字節(jié)。
為了兼容ASCII,Unicode 規(guī)定前0~127個(gè)字符與ASCII是一樣的,不一樣的只是128~255的這一段。
相關(guān)閱讀》》在Linux下運(yùn)行C語(yǔ)言程序
Gedit
Gedit是一個(gè)簡(jiǎn)單實(shí)用的文本編輯器,擁有漂亮的界面,支持語(yǔ)法高亮,比 Vim 更易上手。本教程將Gedit作為C代碼編輯器。
Gedit的安裝:
sudo apt-add-repository ppa:ubuntu-on-rails/ppa //添加ubuntu的軟件源
sudo apt-get update //更新軟件列表
sudo apt-get install gedit-gmate //安裝
在當(dāng)前目錄下創(chuàng)建一個(gè)C源文件并打開:
touch test.c
gedit test.c
可以看到gedit的窗口,輸入:
#include
gedit 窗口截圖
注意:Gedit支持多種語(yǔ)言的高亮顯示,一般情況下能夠自動(dòng)識(shí)別語(yǔ)言,如果識(shí)別錯(cuò)誤,請(qǐng)?jiān)?ldquo;編輯->高亮模式“下選擇C。
GCC
Linux下使用最廣泛的C/C++編譯器是GCC,大多數(shù)的Linux發(fā)行版本都默認(rèn)安裝,不管是開發(fā)人員還是初學(xué)者,一般都將GCC作為L(zhǎng)inux下首選的編譯工具。本教程毫不猶豫地使用GCC來(lái)編譯C程序。
保存文件后退出,打開終端并 cd 到當(dāng)前目錄,輸入下面的命令:
gcc test.c -o test
可以直接將C代碼編譯鏈接為可執(zhí)行文件。
可以看到在當(dāng)前目錄下多出一個(gè)文件 test,這就是可執(zhí)行文件。不像Windows,Linux不以文件后綴來(lái)區(qū)分可執(zhí)行文件,Linux下的可執(zhí)行文件后綴理論上是可以任意更改的。
當(dāng)然,也可以分步編譯:
1) 預(yù)處理
gcc -E test.c -o test.i
在當(dāng)前目錄下會(huì)多出一個(gè)預(yù)處理結(jié)果文件 test.i,打開 test.i 可以看到,在 test.c 的基礎(chǔ)上把stdio.h和stdlib.h的內(nèi)容插進(jìn)去了。
2) 編譯為匯編代碼
gcc -S test.i -o test.s
其中-S參數(shù)是在編譯完成后退出,-o為指定文件名。
3) 匯編為目標(biāo)文件
gcc -c test.s -o test.o
.o就是目標(biāo)文件。目標(biāo)文件與可執(zhí)行文件類似,都是機(jī)器能夠識(shí)別的可執(zhí)行代碼,但是由于還沒有鏈接,結(jié)構(gòu)會(huì)稍有不同。
3) 鏈接并生成可執(zhí)行文件
gcc test.o -o test
如果有多個(gè)源文件,可以這樣來(lái)編譯:
gcc -c test1.c -o test1.o
gcc -c test2.c -o test2.o
gcc test1.o test2.o -o test
注意:如果不指定文件名,GCC會(huì)生成名為a.out的文件,.out文件只是為了區(qū)分編譯后的文件,Linux下并沒有標(biāo)準(zhǔn)的可執(zhí)行文件后綴名,一般可執(zhí)行文件都沒有后綴名。
編譯后生成的test文件就是程序了,運(yùn)行它:
./test
如果沒有運(yùn)行權(quán)限,可以使用sudo命令來(lái)增加權(quán)限(注意要在Linux的分區(qū)下):
sudo cdmod test 777
對(duì)于程序的檢錯(cuò),我們可以用-pedantic、-Wall、-Werror選項(xiàng):
-pedantic選項(xiàng)能夠幫助程序員發(fā)現(xiàn)一些不符合 ANSI/ISO C標(biāo)準(zhǔn)的代碼(并不是全部);
-Wall可以讓gcc顯示警告信息;
-Werror可以讓gcc在編譯中遇到錯(cuò)誤時(shí)停止繼續(xù)。
這3個(gè)選項(xiàng)都是非常有用的。
【ASCII編碼與Unicode編碼】相關(guān)文章:
ASCII編碼和Unicode編碼11-03
C語(yǔ)言:ASCII編碼與Unicode編碼10-11
淺析PHP中的UNICODE編碼與解碼10-23
PHP如何實(shí)現(xiàn)Unicode和Utf-8編碼相互轉(zhuǎn)換07-28
C語(yǔ)言的編碼規(guī)范08-23
C語(yǔ)言的編碼編譯08-11
正確給商品編碼歸類的原則08-27