單片機中的字及字節(jié)詳解
容易混淆的概念
字
在計算機中,一串數碼作為一個整體來處理或運算的,稱為一個計算機字,簡稱字。字通常分為若干個字節(jié)(每個字節(jié)一般是8位)。在存儲器中,通常每個單元存儲一個字,因此每個字都是可以尋址的。字的長度用位數來表示。 在計算機的運算器、控制器中,通常都是以字為單位進行傳送的。字出現在不同的地址其含義是不相同。例如,送往控制器去的字是指令,而送往運算器去的字就是一個數。字長
計算機的每個字所包含的位數稱為字長。根據計算機的不同,字長有固定的和可變的兩種。固定字長,即字長度不論什么情況都是固定不變的;可變字長,則在一定范圍內,其長度是可變的。 計算的字長是指它一次可處理的二進制數字的數目。計算機處理數據的速率,自然和它一次能加工的位數以及進行運算的快慢有關。如果一臺計算機的字長是另一臺計算機的兩倍,即使兩臺計算機的速度相同,在相同的時間內,前者能做的工作是后者的兩倍。 一般地,大型計算機的字長為32―64位,小型計算機為12―32位,而微型計算機為4一16位。字長是衡量計算機性能的一個重要因素。字節(jié)
字節(jié)是指一小組相鄰的二進制數碼。通常是8位作為一個字節(jié)。它是構成信息的一個小單位,并作為一個整體來參加操作,比字小,是構成字的單位。 在微型計算機中,通常用多少字節(jié)來表示存儲器的存儲容量。 1.2 字符,字節(jié),字符串 理解編碼的關鍵,是要把字符的概念和字節(jié)的概念理解準確。這兩個概念容易混淆,我們在此做一下區(qū)分: 概念描述 舉例 字符 人們使用的記號,抽象意義上的一個符號。 '1', '中', 'a', '$', '¥', …… 字節(jié) 計算機中存儲數據的單元,一個8位的二進制數,是一個很具體的存儲空間。0x01, 0x45, 0xFA, ……字符串
在內存中,如果“字符”是以ANSI編碼形式存在的,一個字符可能使用一個字節(jié)或多個字節(jié)來表示,那么我們稱這種字符串為 ANSI 字符串或者多字節(jié)字符串。如,"中文123" (占7字節(jié))。字符集和代碼頁
對于ANSI編碼方式,存在不同的字符集(Charset)。同樣的字節(jié)序列,在不同的字符集下表示的字符不一樣。要正確解析一個ANSI字符串,還要選擇正確的字符集,否則就可能導致所謂的亂碼現象。不同語言版本的操作系統(tǒng),都有一個默認的字符集。在不指定字符集的情況下,系統(tǒng)會使用此字符集來解析 ANSI 字符串。也就是說,如果我們在簡體中文版的Windows下打開了一個由日文操作系統(tǒng)保存的 ANSI 文本文件(僅包含 ANSI 字符串的文本文件),我們看到的將是亂碼。但是,如果我們使用Visual Studio之類的帶編碼選擇的文本編輯器打開此文件,并且選擇正確的字符集,我們將可以看到它的原貌。注意:簡體中文字符集中的繁體字和繁體中文字符集中的繁體字,編碼不一定相同(事實證明,似乎是完全不同)。 每個字符集都有一個唯一的編號,稱為代碼頁(Code Page)。簡體中文(GB2312)的代碼頁為936,而系統(tǒng)默認字符集的代碼頁為0,它表示根據系統(tǒng)的語言設置來選擇一個合適的字符集。UNICODE
字符串 在內存中,如果“字符”是以在Unicode中的序號存在的,那么我們稱這種字符串為Unicode字符串或者寬字節(jié)字符串。在Unicode中,每個字符都占兩個字節(jié)。如,"中文123"(占10字節(jié))。 Unicode和ANSI的區(qū)別就相當于輸入法內的“全角”和“半角”的區(qū)別。 由于不同 ANSI 編碼所規(guī)定的標準是不相同的(字符集不同),因此,對于一個給定的多字節(jié)字符串,我們必須知道它采用的是哪一種字符集則,才能夠知道它包含了哪些“字符”。而對于 UNICODE 字符串來說,不管在什么環(huán)境下,它所代表的“字符”內容總是不變的。Unicode 有著統(tǒng)一的標準,它定義了世界上絕大多數的字符的編碼,使得拉丁文、數字、簡體中文、繁體中文、日文等都能以同一種編碼方式保存。單片機相關文章:單片機教程
單片機相關文章:單片機視頻教程
單片機相關文章:單片機工作原理
評論