回覆列表
-
1 # 使用者8325462378455
-
2 # 使用者1417863183440
計算機中的資料都是以0和1來表示的,其中一個0或者一個1稱之為一位,8位稱為一個位元組(Byte),兩個位元組稱為一個字(Word).一位十六進位制的數等於四位二進位制的數。一個位元組等於8位二進位制數.所以FFFF就是二進位制的1111111111111111.一共2個位元組。
位元組(Byte):位元組是透過網路傳輸資訊(或在硬碟或記憶體中儲存資訊)的單位。 位元組是計算機資訊科技用於計量儲存容量和傳輸容量的一種計量單位,1個位元組等於8位二進位制。 在ASCII碼中,一個英文字母(不分大小寫)佔一個位元組的空間,一箇中文漢字佔兩個位元組的空間。 符號:英文標點佔一個位元組,中文標點佔兩個位元組。舉例:英文句號“.”佔1個位元組的大小,中文句號“。”佔2個位元組的大小 一個二進位制數字序列,在計算機中作為一個數字單元,一般為8位二進位制數,如一個ASCII碼就是一個位元組,此類單位的換算為: 1千吉位元組(TB,Terabyte)=1024吉位元組(2的40次方位元組) (1TB=1024GB) 1吉位元組(GB,Gigabyte)=1024兆位元組(2的30次方位元組) (1GB=1024MB) 1兆位元組(MB,Megabyte)=1024千位元組(2的20次方位元組) (1MB=1024KB) 1千位元組(KB,Kilobyte)=1024位元組(2的10次方位元組)(1KB=1024B) 1位元組(Byte)= 8位(bit) 注:TB是現在電腦硬碟最大的儲存量單位。10TB大約等於一個人腦的儲存量。 更大的單位,還有 PB(Petabyte,1PB=1024TB)、EB(Exabyte,1EB=1024PB)、ZB(Zettabyte,1ZB=1024EB)、YB(Yottabyte,1YB=1024ZB)…… 1.2 字元,位元組,字串 理解編碼的關鍵,是要把字元的概念和位元組的概念理解準確。這兩個概念容易混淆,我們在此做一下區分: 概念描述 舉例 字元 人們使用的記號,抽象意義上的一個符號。 "1", "中", "a", "$", "¥", …… 位元組 計算機中儲存資料的單元,一個8位的二進位制數,是一個很具體的儲存空間。0x01, 0x45, 0xFA, …… ANSI 字串 在記憶體中,如果“字元”是以ANSI編碼形式存在的,一個字元可能使用一個位元組或多個位元組來表示,那麼我們稱這種字串為 ANSI 字串或者多位元組字串。如,"中文123" (佔7位元組)。 字符集和內碼表 對於ANSI編碼方式,存在不同的字符集(Charset)。同樣的位元組序列,在不同的字符集下表示的字元不一樣。要正確解析一個ANSI字串,還要選擇正確的字符集,否則就可能導致所謂的亂碼現象。不同語言版本的作業系統,都有一個預設的字符集。在不指定字符集的情況下,系統會使用此字符集來解析 ANSI 字串。也就是說,如果我們在簡體中文版的Windows下打開了一個由日文作業系統儲存的 ANSI 文字檔案(僅包含 ANSI 字串的文字檔案),我們看到的將是亂碼。但是,如果我們使用Visual Studio之類的帶編碼選擇的文字編輯器開啟此檔案,並且選擇正確的字符集,我們將可以看到它的原貌。注意:簡體中文字符集中的繁體字和繁體中文字符集中的繁體字,編碼不一定相同(事實證明,似乎是完全不同)。 每個字符集都有一個唯一的編號,稱為內碼表(Code Page)。簡體中文(GB2312)的內碼表為936,而系統預設字符集的內碼表為0,它表示根據系統的語言設定來選擇一個合適的字符集。 UNICODE 字串 在記憶體中,如果“字元”是以在Unicode中的序號存在的,那麼我們稱這種字串為Unicode字串或者寬位元組字串。在Unicode中,每個字元都佔兩個位元組。如,"中文123"(佔10位元組)。 Unicode和ANSI的區別就相當於輸入法內的“全形”和“半形”的區別。 由於不同 ANSI 編碼所規定的標準是不相同的(字符集不同),因此,對於一個給定的多位元組字串,我們必須知道它採用的是哪一種字符集則,才能夠知道它包含了哪些“字元”。而對於 UNICODE 字串來說,不管在什麼環境下,它所代表的“字元”內容總是不變的。Unicode 有著統一的標準,它定義了世界上絕大多數的字元的編碼,使得拉丁文、數字、簡體中文、繁體中文、日文都能一同一種編碼方式儲存。