❶ C語言字元數占幾個位元組,又是多少位。
這個要看字元數是什麼數據類型,可以用sizeof(類型)操作符來測試位元組數。
1、英文字母:如果是char 型,那麼是佔用1個位元組,8位。如果是string型,應該是兩個位元組,16位,因為末尾還有個\0字元。
比如:
char c = 'a';//它佔用一個字元
char c[] = "a";//佔用兩個。
char c[] = "abcde";//佔用4+1 = 5 個,結尾有一個'\0'
2、數字:有很多種類,從小到大分別為:
short、int、float、long、double
位元組為:1個、2個、4個、8個、8個
位數為:8位、16位、32位、64位、64位
3、漢字:理論上說,一個漢字佔用兩個位元組,16位。比如:中國,就佔用4個位元組,例如:
char c[] = "中國";//佔用4+1 = 5個字元
❷ 一個漢字等於多少個位元組
一個字元根據編碼的不同可能等於一個、兩個或三個位元組。無論是漢字、字母、還是標點,它們都是一個字元。在計算機中,一串數碼作為一個整體來處理或運算的,稱為一個計算機字,簡稱字。
位元組的理解
字通常分為若干個位元組(每個位元組一般是8位)。位元組是指一小組相鄰的二進制數碼。通常是8位作為一個位元組。它是構成信息的一個小單位,並作為一個整體來參加操作,比字小,是構成字的單位。
位的理解
在計算中,底層都是晶體管的開關和關閉狀態,我們把一個表示開關狀態的稱之為位,把八位稱之為一個位元組,也就是一個位元組可以表示(00000000-11111111),也就是0到255。字元實際上還不到128個,按道理7位就夠了,一個說法是程序員也比較迷信,認為7是個不吉利的數字,另一種說法,8剛好是2^3地方,更容易計算機去理解。
全新的編碼方法
隨著互聯網的繼續發展,不同的國家,不同的語言都用著不同的編碼,每當不同的人進行交流,都要先知道對方用的是什麼編碼,這往往就造成了溝通的成本,而且經常因為編碼錯誤造成各種烏龍。
國際上就定一了一種全新的編碼方法,全世界所有的字元、文字都有對應的一個編碼,以後,就不需要轉化成不同的編碼了,這便是Unicode編碼。Unicode編碼使用4個位元組來描述一個字元,每個位元組8位,理論上就能表示2^32個不同的字元,全世界的字元都沒這么多。
(2)每個字元對應多少個數據擴展閱讀:
UTF8編碼
原先一個英文字元需要1個位元組,一個中文需要兩個位元組,現在需要4個位元組,相當於存儲變大了。這給網路傳輸、系統存儲都帶來了一定的成本。這個時候,人們覺得壓縮一下,於是提出了UTF8,UTF16這樣的表示方法,UTF8我們最經常使用。
對於一個漢字,例如上述學習的學字在Unicode編碼中表示為00000000 00000000 01011011 01100110。很明顯,前面位元組都是0,非常的浪費,最好是能夠把它壓縮起來,又能讓別人知道它原來對應的就是四個位元組。
UTF8就是為了解決這個問題,對於原來是雙字元的中文,會變成3個位元組,第一個位元組以1110開頭,後面兩個以10開頭。剩下的16位分攤到這3個位元組當中。圖中便是這個學字如何從Unicode編碼轉成utf8編碼。
編碼的歷史
1、在Unicode之前,一共存在過3套中文編碼標准。GB2312-80,是中國大陸使用的國家標准,其中一共編碼了6763個常用簡體漢字。
2、Big5,是台灣使用的編碼標准,編碼了台灣使用的繁體漢字,大概有8千多個。
3、HKSCS,是中國香港使用的編碼標准,字體也是繁體,但跟Big5有所不同。
這3套編碼標准都採用了兩個擴展ASCII的方法,因此,幾套編碼互不兼容,而且編碼區間也各有不同。因為其不兼容性,在同一個系統中同時顯示GB和Big5基本上是不可能的。後來,由於各方面的原因,國際上又制定了針對中文的統一字元集GBK和GB18030,其中GBK已經在Windows、Linux等多種操作系統中被實現。