天天看點

位(bit)、位元組(byte)、字元、編碼之間的關系

1、位:

資料存儲的最小機關。每個二進制數字0或者1就是1個位;

2、位元組:

8個位構成一個位元組;即:1 byte (位元組)= 8 bit(位);

     1 KB = 1024 B(位元組);

     1 MB = 1024 KB;  

     1 GB = 1024 MB; 

     1 TB = 1024 GB; 

3、字元:

     a、A、中、+、*、の......均表示一個字元;

     一般 utf-8 編碼下,一個漢字 字元 占用 3 個 位元組;

     一般 gbk 編碼下,一個漢字  字元  占用 2 個 位元組;

4、字元集:

     即各種各個字元的集合,也就是說哪些漢字,字母(A、b、c)和符号(空格、引号..)會被收入标準中;

5、編碼:

     規定每個“字元”分别用一個位元組還是多個位元組存儲,用哪些位元組來存儲,這個規定就叫做“編碼”。

  (其實際是對字元集中字元進行編碼,即:每個字元用二進制在計算中表示存儲);

    通俗的說:編碼就是按照規則對字元進行翻譯成對應的二進制數,在電腦中運作存儲,使用者看的時候(比如浏覽器),在用對應的編碼解析出來使用者能看懂的;

    (1)标準ASCii字元集:有96個列印字元,和32個控制字元組成;一共96+32=128個;

             用7位二進制數來對每1個字元進行編碼;

             而由于7位還還不夠1個位元組,而電腦的内部常用位元組來用處理,每個位元組中多出來的最高位用0替代;

             0 000   0000.........................0

             0 111    1111..........................127;   從0----127,來表示128個ACSii編碼;

             比如:字元 'A'----------在電腦内部用0 100 0001 (65)來表示;

                        字元'a'-----------在電腦内部用0 110 0001 (97)來表示;

             注意:'10'在電腦内部是沒有編碼的,因為它是字元串,而不是單個字元。可以分别對1,0字元編碼存儲;

     (2)擴充ASCii字元集:将标準的ASCii最高位1,得到十進制代碼128---255(1 000 0000----1 111 1111);是以字元集一共有0---255,  256個字元;

     (3)gb2312字元集: 所有漢字字元在計算機内部采用2個位元組來表示,每個位元組的最高位規定為1【正好與标準ASCii字元(最高位是0)不重疊,并相容】,不支援繁體字;

             是以:gb2312表示漢字的編碼為:[129--255][129--255]  (兩個位元組,每個位元組最高位是1);小于127的字元,與ASCii編碼相同;

     (4)gbk字元集:gb2312的擴充,相容gb2312,除了收錄gb2312所有的字元外,還收錄了其他不常見的漢字、繁體字等;

繼續閱讀