進(jìn)制與進(jìn)制之間的轉(zhuǎn)化
例:將二進(jìn)制的 101011 轉(zhuǎn)換為十進(jìn)制的步驟如下:
第0位 1 x 2^0 = 1弊琴;
第1位 1 x 2^1 = 2;
第2位 0 x 2^2 = 0渐裂;
第3位 1 x 2^3 = 8炉抒;
第4位 0 x 2^4 = 0球拦;
第5位 1 x 2^5 = 32置森;
讀數(shù),把結(jié)果值相加端衰,1+2+0+8+0+32=43叠洗。
例:將十進(jìn)制轉(zhuǎn)化為其他進(jìn)制:
.
.
.
.
嘗試一下,將869轉(zhuǎn)化七進(jìn)制為多少旅东?再將它轉(zhuǎn)化為三進(jìn)制又是多少灭抑?
一個(gè)字節(jié)八個(gè)位 1 Byte = 8 Bit
1KB=1024B;1MB=1024KB=1024×1024B抵代。
一個(gè)八位字節(jié)腾节,能存多少種不同的信息?256
字符:就是有意義的圖形荤牍,比如 樹 Apple
很久很久以前案腺,計(jì)算機(jī)世界只有美國人。美國人的文字造詣很低的康吵,他們的所有文字就只有26個(gè)字母劈榨,甚至加上大寫和小寫,阿拉伯?dāng)?shù)字晦嵌,計(jì)算機(jī)中的控制符(回車啥的)都不超過256個(gè)(只有127個(gè))同辣。于是,對于他們來說惭载,很自然旱函,那么計(jì)算機(jī)中用8位就可以表示他們的所有字符了吧。于是他們將8位稱作一個(gè)字節(jié)棕兼,計(jì)算機(jī)的8位表示的每個(gè)數(shù)字對應(yīng)了一個(gè)英文字符陡舅,畫了一張表(ASCII碼表)。
接著伴挚,歐洲人出場了靶衍。
歐洲是有好多個(gè)國家的,他們的每個(gè)國家也都有自己的文字茎芋,比如拉丁文颅眶,希臘文等。怎么辦呢田弥?于是想到涛酗,你美國人指定的ASCII碼表里面不是只有127個(gè)字符嗎,后面128-255的字符不是說待定嗎偷厦,好吧商叹,我們就不客氣了。于是歐洲人就將各種奇怪的語言塞入127后面的字符中只泼,形成了一系列的ISO 8859字符集
后來剖笙,偉大的中國人也開始使用上電腦了。
中文可不得了请唱,文字博大精深弥咪,字符遠(yuǎn)遠(yuǎn)超過了256個(gè)。所以我們無法使用ASCII的擴(kuò)展了十绑。怎么辦呢聚至? 1981年的時(shí)候,國家派一批人來做了這個(gè)事情本橙,他們統(tǒng)計(jì)出所有的中文大概有6000多個(gè)字符(后來證明這些人的水品也是有限扳躬,好多字符都沒有搜出來,于是就有了多種的中文編碼)甚亭,用兩個(gè)字節(jié)(16bit)來表示贷币,16bit能表示的是65536個(gè)字符,太夠了狂鞋。我們將16bit分為前8bit和后8bit
如果前8bit小于127(英文ASCII)片择,那么這個(gè)8bit就是表示英文
如果前8bit大于127,那么這8bit和后面的8bit合起來表示一個(gè)中文
GB是啥意思骚揍?國標(biāo)字管。
好了,后來某些人發(fā)現(xiàn)信不,錄入身份證時(shí)候嘲叔,他的名字沒法編碼,這個(gè)問題出來了抽活。6000個(gè)漢字還不足以囊括所有中文硫戈,國家在1995年又組織了一批人,繼續(xù)搜羅一些生僻字下硕,一共搜集出了21886個(gè)漢字和字符丁逝,形成了GBK編碼汁胆,GBK編碼向下兼容GB。
中國臺灣的人民當(dāng)然不能使用大陸編輯使用的GBXX系列編碼了霜幼,于是他們自己搞了一套BIG5中文編碼嫩码,收錄了13060個(gè)漢字和字符。但是這里要注意罪既,BIG5的編碼映射表和GBXX系列的就完全不一樣了铸题,比如同一個(gè)“中”字,在BIG5和GB2312中就是兩個(gè)完全不同的字節(jié)琢感。這里就會有亂碼出現(xiàn)了丢间,比如("陶喆"和"陶吉吉"),各種簡體中文和繁體文的轉(zhuǎn)碼工具就出現(xiàn)了驹针。
各個(gè)國家使用各個(gè)國家自己的編碼有沒有很繁瑣烘挫?于是大家很期盼有一種統(tǒng)一的編碼形式出現(xiàn)。Unicode編碼出現(xiàn)了牌捷。Unicode使用的通用的字符集叫做UCS墙牌。這個(gè)字符集就是一個(gè)大的字符空間,每個(gè)語種都在這個(gè)字符空間內(nèi)劃分一段領(lǐng)域“瞪現(xiàn)在應(yīng)用的UCS是UCS-2喜滨,意思就是不管是英文中文,統(tǒng)一使用兩個(gè)字節(jié)(16bit)來進(jìn)行字符分配撤防。UCS-2字符集可以表示216(即65536)個(gè)字符虽风。已經(jīng)基本滿足世界上所有語言了。如果不夠怎么辦寄月?已經(jīng)有預(yù)定方案UCS-4(用4個(gè)字節(jié)表示一個(gè)字符)辜膝。
切記:UTFXX是Unicode的具體實(shí)現(xiàn)方式。
UTF-16是Unicode最基本的實(shí)現(xiàn)漾肮。Unicode使用16bit表示一個(gè)字符厂抖,UTF-16就是直接將字符集的映射搬過來而已。
本來這樣就已經(jīng)很美好了克懊,但是美國人又不干了忱辅。憑什么每個(gè)英語字符要占用2個(gè)字節(jié)?憑什么占用了我們的帶寬和CPU谭溉?于是一幫英語體系的外國人討論出了UTF-8這種字符編碼墙懂。
UTF-8這種編碼是怎么回事呢?
英文字符扮念,和ASCII碼一樣损搬,占用一個(gè)字節(jié)
其他語種,每種語種分配一個(gè)模板,這個(gè)模板有16bit巧勤,24bit嵌灰,甚至還有32bit的。各個(gè)語種根據(jù)這個(gè)模板踢关,將自己的語言轉(zhuǎn)化成模板要求的編碼(UTF-8)
這里演示一個(gè)中文字“漢”
比如中文分到的模板是1110xxxx 10yyyyyy 10zzzzzz
漢字的Unicode編碼是0x6C49伞鲫,二進(jìn)制是0110 1100 0100 1001
將這個(gè)二進(jìn)制按照模板的x粘茄,y签舞,z順序插入
得到11100110 10110001 10001001 就是E6 B1 89
好了…大家看出這個(gè)對中文有什么不好的嗎?原先一個(gè)中文使用UTF-16只需要兩個(gè)字節(jié)柒瓣,但是使用UTF-8卻需要3個(gè)字節(jié)儒搭,如果一個(gè)網(wǎng)頁有1w個(gè)中文字,那么我們就需要多傳輸1w個(gè)字節(jié)芙贫,帶寬奥辍!磺平! 現(xiàn)在就明白了魂仍,為什么國內(nèi)一些網(wǎng)站,比如sina拣挪,它的編碼規(guī)則是使用GBK了吧擦酌!