字元在計算機中是如何表示的?

2021-09-24 15:50:12 字數 2334 閱讀 4807

如果計算機只儲存二進位制資料,那麼它如何表示字元呢?計算機使用的是字符集,將字元對映為整數。早期,字符集只用 8 位表示。即使是現在,在字元模式(如 ms-dos)下執行時,ibm 相容微機使用的還是 ascii(讀為「askey」)字符集。

ascii 是美國標準資訊交換碼(ametican standard code for information interchange)的首字母縮寫。在 ascii 中,每個字元都被分配了乙個獨一無二的 7 位整數。

由於 ascii 只用位元組中的低 7 位,因此最高位在不同計算機上被用於建立其專有字符集。比如,ibm 相容微機就用數值 128〜255 來表示圖形符號和希臘字元。

美國國家標準協會(ansi)定義了 8 位字符集來表示多達 256 個字元。前 128 個字元對應標準美國鍵盤上的字母和符號。後 128 個字元表示特殊字元,諸如國際字母表、重音符號、貨幣符號和分數。

microsoft windows 早期版本使用 ansi 字符集。

當前,計算機必須能表示計算機軟體中世界上各種各樣的語言。因此,unicode 被建立出來,用於提供一種定義文字和符號的通用方法。

unicode 定義了數字**(稱為**點(code point)),定義的物件為文字、符號以及所有主要語言中使用的標點符號,包括歐洲字母文字、中東的從右到左書寫的文字和很多亞洲文字。**點轉換為可顯示字元的格式有三種:

有乙個或多個字元的序列被稱為字串(string)。更具體地說,乙個 ascii 字串是儲存在記憶體中的,包含了 ascii **的連續位元組。比如,字串「abc123」的數字**是 41h、42h、43h、31h、32h 和 33h。

以空位元組結束(null-terminated)的字串是指,在字串的結尾處有乙個為 0 的位元組。c 和 c++ 語言使用的是以空位元組結束的字串,一些 windows 作業系統函式也要求字串使用這種格式。

下圖中列出了在 windows 控制台模式下執行時使用的 ascii 碼。

在查詢字元的十六進製制 ascii 碼時,先沿著**最上面一行,再找到包含要轉換字元的列即可。**第二行是該十六進製制數值的最高位;左起第二列是最低位。

例如,要查詢字母 a 的 ascii 碼,先找到包含該字母的列,在這一列第二行中找到第乙個十六進製制數字 6。然後,找到包含 a 的行的左起第二列,其數字為 1。因此,a 的 ascii 碼是十六進製制數 61。

下圖用簡單的形式說明了這個過程:

0〜31 的字元**被稱為 ascii 控制字元。若程式用這些**編寫標準輸出(比如 c++ 中),控制字元就會執行預先定義的動作。下表列出了該範圍內最常用的字元。

ascii碼(十進位制)

說明ascii碼(十進位制)說明8

回退符(向左移動一列)

12換頁符(移動到下乙個列印頁)

9水平製表符(向前跳過 n 列)

13回車符(移動到最左邊的輸出列)

10換行符(移動到下乙個輸出行)

27換碼符

用精確的術語描述記憶體中和顯示屏上的數字及字元是非常重要的。比如,在記憶體中用單位元組儲存十進位制數 65,形式為 0100 0001。除錯程式可能會將該位元組顯示為「41」,這個數字的十六進製制形式。

如果這個位元組複製到視訊記憶體中,則顯示屏上可能顯示字母「a」,因為在 ascii 碼中,0100 0001 代表的是字母 a。由於數字的解釋可以依賴於它的上下文,因此,下面為每個資料表示型別分配乙個特定的名稱,以便將來的討論更加清晰:

二進位制整數是指,以其原始格式儲存在記憶體中的整數,以備用於計算。二進位制整數儲存形式為 8 位的倍數(如 8、16、32 或 64)。

數字字串是一串 ascii 字元,例如「123」或「65」。這是一種簡單的數字表示法,下表以十進位制數 65 為例,列出了這種表示法能使用的各種形式。

格式數值

格式數值

二進位制數字字串

「01000001」

十六進製制數字字串

「41」

十進位制數字字串

「65」

八進位制數字字串

「101」

1.12 組合語言布林表示式

處理器架構

2.1cpu處理器架構

2.2 32位x86處理器架構

2.3 x86-64處理器架構

2.4 x86計算機元件

組合語言基礎

3.1 第乙個組合語言程式

3.2組合語言常量

3.3 組合語言保留字

3.4 組合語言識別符號

3.5 組合語言偽指令

負數在計算機中如何表示?

負數在計算機中如何表示?舉例來說,8在計算機中表示為二進位制的1000,那麼 8怎麼表示呢?很容易想到,可以將乙個二進位制位 bit 專門規定為符號位,它等於0時就表示正數,等於1時就表示負數。比如,在8位機中,規定每個位元組的最高位為符號位。那麼,8就是00001000,而 8則是10001000...

負數在計算機中如何表示?

為什麼要使用2的補碼 two s complement 形式儲存負數?反碼舉例來說 8在計算機中表示為二進位制的1000,那麼 8怎麼表示呢?可以將乙個二進位制最高位 bit 專門規定為符號位,它等於0時就表示正數,等於1時就表示負數。比如,在8位機中,規定每個位元組的最高位為符號位。那麼,8就是0...

浮點數在計算機中是如何表示的

相比int等整型,float等浮點型別的表示和儲存較為複雜,但它又是乙個無法迴避的話題,那麼就有必要對浮點一 竟了。在計算機中,一般用ieee浮點近似表示任意乙個實數,那麼它實際上又是如何表示的呢?下面的表示式裡,i的值是多少,為什麼?如果你不確定答案,那麼你應該好好看看本文。float f 8.2...