總結一下常見的幾種編碼優缺點
ansi編碼是一種對
ascii
碼的拓展:
ansi
編碼用0x00~0x7f
(即十進位制下的0到
127)範圍的
1 個位元組來表示
1 個英文本元,超出乙個位元組的
0x80~0xffff
範圍來表示其他語言的其他字元。也就是說,
ansi
碼僅在前
128(
0-127
)個與ascii
碼相同,之後的字元全是某個國家語言的所有字元。值得注意的是,兩個位元組最多可以儲存的字元數目是2的
16次方,即
65536
個字元,這對於乙個語言的字元來說,絕對夠了。還有
ansi
編碼其實包括很多編碼:中國制定了
gb2312
編碼,用來把中文編進去另外,日本把日文編到
shift_jis
裡,南韓把韓文編到
euc-kr
裡,各國有各國的標準。受制於當時的條件,不同語言之間的
ansi
碼之間不能互相轉換,這就會導致在多語言混合的文字中會有亂碼
為了解決不同國家ansi編碼的衝突問題,
unicode
應運而生:如果全世界每乙個符號都給予乙個獨一無二的編碼,那麼亂碼問題就會消失。這就是
unicode
,就像它的名字都表示的,這是一種所有符號的編碼。
unicode標準也在不斷發展,但最常用的是用兩個位元組表示乙個字元(如果要用到非常偏僻的字元,就需要
4個位元組)。現代作業系統和大多數程式語言都直接支援
unicode
。但是問題在於,原本可以用乙個位元組儲存的英文本母在unicode裡面必須存兩個位元組(規則就是在原來英文本母對應
ascii
碼前面補
0),這就產生了浪費。那麼有沒有一種既能消除亂碼,又能避免浪費的編碼方式呢?答案就是
utf-8
!這是一種變長的編碼方式:它可以使用1~4個位元組表示乙個符號,根據不同的符號而變化位元組長度,當字元在
ascii
碼的範圍時,就用乙個位元組表示,保留了
ascii
字元乙個位元組的編碼做為它的一部分,如此一來
utf-8
編碼也可以是為視為一種對
ascii
碼的拓展。值得注意的是
unicode
編碼中乙個中文字元佔
2個位元組,而
utf-8
乙個中文字元佔
3個位元組。從
unicode
到uft-8
並不是直接的對應,而是要過一些演算法和規則來轉換。
在計算機記憶體中,統一使用unicode編碼,當需要儲存到硬碟或者需要傳輸的時候,就轉換為
utf-8
編碼。用記事本編輯的時候,從檔案讀取的utf-8字元被轉換為
unicode
字元到記憶體裡,編輯完成後,儲存的時候再把
unicode
轉換為utf-8
儲存到檔案。
gbk 擴充套件中文
gb編碼(相容了
gb2312
)更全編碼方式:兩個位元組表示乙個漢字
英文本母或半形標點占用乙個位元組
unicode:國際組織編碼,容納世界上所有的文字和符號的字元編碼
(1)包括utf-32編碼
每個字元用乙個int來表示
abcd
需要占用4個
int特點:簡單,太浪費空間
(2)utf-16編碼
特點:用1到2個
short
來表示乙個字元
(3)utf-8 編碼
用1到4
個位元組來表示乙個字元(比較節省空間)
如果這個字元小(在000000-00007f之間)則用乙個位元組 ,一次類推如果該字元比較大比如漢字(數就比較大)占用兩個位元組,這個字元如果在大就用三個位元組
常見的儲存結構及其優缺點
邏輯關係對映到物理儲存的對映方式有4種 順序 鏈式 索引 雜湊,相應地就產生了四種儲存結構 順序儲存結構 鏈式儲存結構 索引儲存結構 雜湊儲存結構。優點 儲存密度大 可以隨機訪問,在o 1 內查詢 修改元素。缺點 表示關係能力弱 維護關係困難 邏輯關係發生變化,物理上難同步 在o n 內插入和刪除資...
常見記憶體分配演算法及優缺點
常見記憶體分配演算法及優缺點 常見記憶體分配演算法及優缺點如下 1 首次適應演算法。使用該演算法進行記憶體分配時,從空閒分割槽鏈首開始查詢,直至找到乙個能滿足其大小要求的空閒分割槽為止。然後再按照作業的大小,從該分割槽中劃出一塊記憶體分配給請求者,餘下的空閒分割槽仍留在空閒分割槽鏈中。該演算法傾向於...
常見機器學習演算法優缺點
1 線性模型 形式簡單 易於建模 很好的可解釋性 2 邏輯回歸 無需事先假設資料分布 可得到近似概率 對率函式任意階可導的凸函式,許多數值優化演算法都可直接用於求取最優解 3 線性判別分析 lda 當兩類資料同先驗 滿足高斯分布且協方差相等時,lda可達到最優分類 4 boosting 代表adab...