1. 程式人生 > >每日一學--深究字節與字符

每日一學--深究字節與字符

pow test ner short and logs 信息 mysq 類型

轉載自:http://www.cnblogs.com/strivers/archive/2011/01/04/1925826.html

package com.suypower.chengyu.test;

public class ByteTest {

 /**
  * byte 8 bits -128 - + 127
  * 1 bit = 1 二進制數據
  * 1 byte = 8 bit
  * 1 字母 = 1 byte = 8 bit(位)
  * 1 漢字 = 2 byte = 16 bit
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
byte b1 = 127; byte b2 = -128; byte b3 = ‘a‘; byte b4 = ‘A‘; // 一個字母 = 1 byte = 8 bit // byte b5 =‘aa‘; 這就錯了 // byte b6 =‘中‘; 這就錯了 一個漢字 2個字節 16bit short s1 = ‘啊‘; // 一個漢字 2個字節 16bit short 是 16 bit位的 // short s2 = ‘漢字‘; // 2個漢字 4個字節 32 bit int 是32 bit的 // int i1 = ‘漢字‘; 但是 int 是數字類型的 , char 是 16 bit的 = 2 byte = 一個漢字
char c1 = ‘汗‘; // byte 轉換 string String string = "中文"; byte by[] = string.getBytes(); String str = new String(by); System.out.println("str="+str); } }

==================================================================================

1 bit = 1 二進制數據
1 byte = 8 bit
1 字母 = 1 byte = 8 bit


1 漢字 = 2 byte = 16 bit

1. bit:位
一個二進制數據0或1,是1bit;

2. byte:字節
存儲空間的基本計量單位,如:MySQL中定義 VARCHAR(45) 即是指 45個字節;
1 byte = 8 bit

3. 一個英文字符占一個字節;
1 字母 = 1 byte = 8 bit

4. 一個漢字占2個字節;
1 漢字 = 2 byte = 16 bit

5. 標點符號
A>. 漢字輸入狀態下,默認為全角輸入方式;
B>. 英文輸入狀態下,默認為半角輸入方式;

C>. 全角輸入方式下,標點符號占2字節;
D>. 半角輸入方式下,標點符號占1字節;

故:漢字輸入狀態下的字符,占2個字節 (但不排除,自己更改了默認設置);
英文輸入狀態下的字符,占1個字節 (但不排除,自己更改了默認設置);

老美在發明電腦時,肯定以自己的英文字母--即他們自認為的字符為最小的存儲計量單位,於是也就有了不規範的1字符=1byte, 豈不知還有我們偉大的漢字計量單位,NND,一個漢字也是一個字符,我們的1漢字字符就等於2byte,後來,他們可能意識到這個尷尬的問題,於是又標榜為:一個字母為一個標準字符,去球吧,誰整天沒事說個字符還“標準字符”,所以啊,個人認為:字符,不能用於標準的計量單位。

轉載自:http://blog.csdn.net/andyzhaojianhui/article/details/53785656

字符和字節的進階

(一)“字節”的定義

字節(Byte)是一種計量單位,表示數據量多少,它是計算機信息技術用於計量存儲容量的一種計量單位。

(二)“字符”的定義

字符是指計算機中使用的文字和符號,比如1、2、3、A、B、C、~!·#¥%……—*()——+、等等。

(三)“字節”與“字符”

它們完全不是一個位面的概念,所以兩者之間沒有“區別”這個說法。不同編碼裏,字符和字節的對應關系不同:

ASCII碼中,一個英文字母(不分大小寫)占一個字節的空間,一個中文漢字占兩個字節的空間。一個二進制數字序列,在計算機中作為一個數字單元,一般為8位二進制數,換算為十進制。最小值0,最大值255。

UTF-8編碼中,一個英文字符等於一個字節,一個中文(含繁體)等於三個字節。

Unicode編碼中,一個英文等於兩個字節,一個中文(含繁體)等於兩個字節。

符號:英文標點占一個字節,中文標點占兩個字節。舉例:英文句號“.”占1個字節的大小,中文句號“。”占2個字節的大小。

UTF-16編碼中,一個英文字母字符或一個漢字字符存儲都需要2個字節(Unicode擴展區的一些漢字存儲需要4個字節)。

UTF-32編碼中,世界上任何字符的存儲都需要4個字節。

每日一學--深究字節與字符