標籤:交換 資料轉送 變化 混合 組成 back tip 傳輸 速度
1.1什麼是位元組
位元組(Byte)是電腦資訊技術用於計量儲存容量的一種計量單位,也表示一些電腦程式設計語言中的資料類型和語言字元。
位元(bit)在電腦中最小的單位,在二進位位的電腦的系統中,每一bit,表示0或1 ,的數字訊號。
1.1.1在不同字元編碼的位元組表示
- ASCII碼:一個英文字母(不分大小寫)佔一個位元組(1B)的空間,一個中文漢字佔兩個位元組(2B)的空間。一個位元字序列,在電腦中作為一個數字單元,一般為8位位元,換算成10進位,最小值0,最大值255.
- utf-8編碼:一個英文字元等於一個位元組,一個中文(含繁體)等於3個位元組。
- unicode編碼:一個英文等於兩個位元組,一個中文(含繁體)等於2個位元組。
符號: 英文標點佔一個位元組,中文的標點佔兩個位元組。例:英文句號"."佔一個位元組大小,中文句號"。"佔兩個位元組大小。
1.2進位的表示和轉換
進位的表示:
二進位: 0 1
8進位 : 0 1 2 3 4 5 6 7 (0-7的組合)(8進位的一位對應2進位的3位,不足3位補位用0表示)
10進位:0-9的組合
16進位:0 1 2 3 4 5 6 7 8 9 A B C D E F(0-F的組合)(16進位的一位對應2進位的4位,不足4位補位用0表示)
進位之間的轉換:
http://jingyan.baidu.com/article/495ba84109665338b30ede98.html
1.3資料存放區和資料轉送
資料存放區
硬碟廠商是以10進位(即10的3次方=1000,1MB = 1000KB)計算的,而電腦是二進位表示(2的10次方,即1MB = 1024KB)。
在電腦好多1TB的硬碟,在電腦只有
1TB = 1000GB = 1000000MB = 1000000000KB = 1000000000000B 硬碟廠商表示
1TB = 1000000000000B /1024 /1024 /1024 = 931GB 電腦容量表示
1KB=1024B;1MB=1024KB=1024×1024B。其中1024=210。1B(byte,位元組)= 8 bit(見下文);1KB(Kibibyte,KB)=1024B= 2^10 B;1MB(Mebibyte,MB,百萬位元組,簡稱“兆”)=1024KB= 2^20 B;1GB(Gigabyte,吉位元組,十億位元組,又稱“千兆”)=1024MB= 2^30 B;1TB(Terabyte,萬億位元組,太位元組)=1024GB= 2^40 B;1PB(Petabyte,千萬億位元組,拍位元組)=1024TB= 2^50 B;1EB(Exabyte,Exabyte,艾位元組)=1024PB= 2^60 B;1ZB(Zettabyte,十萬億億位元組,澤位元組)= 1024EB= 2^70 B;1YB(Yottabyte,一億億億位元組,堯位元組)= 1024ZB= 2^80 B;1BB(Brontobyte,一千億億億位元組)= 1024YB= 2^90 B;1NB(NonaByte,一百萬億億億位元組) = 1024 BB = 2^100 B;1DB(DoggaByte,十億億億億位元組) = 1024 NB = 2^110 B
資料轉送:
資料存放區是位元組("Byte")為單位,資料轉送大多是以“位”("bit",又名“位元”)為單位,一個位就表示0或q(即二進位),每8個位("bit",簡寫為b)組成一個位元組(Byte,簡寫B),bit是最小一級的資訊單位
在電腦中傳輸的最小單位是訊號單位bit ,數字資訊流的基本單位是bit,時間的基本單位是s(秒),因此bit/s(位元每秒)是描述寬頻基本單位。
頻寬(bps)就是在一個固定的時間內(1秒),能通過的最大位元據。
bps (bit per second)
例:
有些寬頻電訊廠商,一個20Mbps的頻寬 ,而實際的最大下載速度大約只有2.5MB/s (這是以每秒多少位元組下載,大寫B)
20Mb/s = 20 / 8 = 2.5MB/s
1Mb/s = 1024Kb/s = 1024Kb / 8 = 128KB / s
你的上傳速度和下載速度 都是共用你的頻寬
1.4字元編碼
字元編碼就是:特定的字元如何對應一個特定的數字標準
1.ASCII編碼
由於電腦是美國人發明的,因此,最早只有128個字母被編碼到電腦裡,也就是大小寫英文字母、數字和一些英文符號,這個編碼被稱為ASCII碼,最初使用的是ASCII碼(American Standared Code for information interchange ,美國標準資訊交換碼)。
雖然標準ASCII字元集字元數目有限, 但由於電腦基本處理單位為位元組(1Byte =1bit ),所以一般 任意一個位元組存放一個ASCII字元,每一個位元組中多餘出來的一位(最高位)在電腦內部通常保持為0(在資料轉送是可用做同位位元。)由於標準ASCII字元集數目有限,在實際應用中往往不夠用,後來加入了很多畫表格時需要用到底線、豎線、交叉等序號遍到了最後一個狀態255,從128到255這一頁的字元集稱為“擴充字元集”。
2.GBK 、GB18030、GB2312
GB2312(1980年)一共收錄了7445個字元,包括6763個漢字和682個其它符號。漢字區的內碼範圍高位元組從B0-F7,低位元組從A1-FE,佔用的碼位是72*94=6768。其中有5個空位是D7FA-D7FE。
GB2312 支援的漢字太少。1995年的漢字擴充規範GBK1.0收錄了21886個符號,它分為漢字區和圖形符號區。漢字區包括21003個字元。2000年的 GB18030是取代GBK1.0的正式國家標準。該標準收錄了27484個漢字,同時還收錄了藏文、蒙文、維吾爾文等主要的少數民族文字。現在的PC平台必須支援GB18030,對嵌入式產品暫不作要求。所以手機、MP3一般只支援GB2312。
GBK就是漢字編碼的規範
從ASCII、GB2312、GBK 到GB18030,這些編碼方法是向下相容的,即同一個字元在這些方案中總是有相同的編碼,後面的標準支援更多的字元。
3.unicode編碼
全世界有上百種語言,日本把日文編到Shift_JIS裡,韓國把韓文編到Euc-kr裡,各國有各國的標準,就會不可避免地出現衝突,結果就是,在多語言混合的文本中,顯示出來會有亂碼。
因此,Unicode應運而生。Unicode把所有語言都統一到一套編碼裡,這樣就不會再有亂碼問題了。Unicode標準也在不斷髮展,但最常用的是用兩個位元組表示一個字元(如果要用到非常偏僻的字元,就需要4個位元組)。現代作業系統和大多數程式設計語言都直接支援Unicode。
UNICODE 。( Universal Multiple-Octet Coded Character Set )簡稱UCS
在UNICODE 中,一個漢字算兩個英文字元的時代已經快過去了。
無論是半形的英文字母,還是全形的漢字,它們都是統一的“一個字元”!同時,也都是統一的“兩個位元組"”
請注意”字元”和”位元組”兩個術語的不同,“位元組”是一個8位的物理存貯單元,而“字元”則是一個文化相關的符號。在unicode中,一個字元就是兩個位元組。一個漢字算兩個英文字元的時代已經快過去了。
我們已經知道,英文字母只用一個位元組表示就夠了,如果unicode統一規定,一個字元都表示兩位元組這對於儲存空間來說是極大的浪費,文字檔的大小會因此大出二倍,這是難以接受的。
4.UTF-8
unicode在很長一段時間內無法推廣,直到互連網的出現,為解決unicode如何在網路上傳輸的問題,於是面向傳輸的眾多 UTF(UCS Transfer Format)標準出現了,顧名思義,UTF-8就是每次8個位傳輸資料,
而UTF-16就是每次16個位。UTF-8就是在互連網上使用最廣的一種unicode的實現方式,這是為傳輸而設計的編碼,並使編碼無國界,這樣就可以顯示全世界上所有文化的字元了。
UTF-8最大的一個特點,就是它是一種變長的編碼方式。它可以使用1~4個位元組表示一個符號,根據不同的符號而變化位元組長度,當字元在ASCII 碼的範圍時,就用一個位元組表示,保留了ASCII字元一個位元組的編碼做為它的一部分,注意的是unicode一個中文字元佔2個位元組,而UTF-8一個中 文字元佔3個位元組)。從unicode到uft-8並不是直接的對應,而是要過一些演算法和規則來轉換。
python3隨記——字元編碼