電腦系統的概念(2)

來源:互聯網
上載者:User

標籤:

本文我們要說一說電腦中資訊的表示

一電腦資訊的表示

我們在數學中學習的計算,都是基於十進位的。這種進位,是起源於印度,在12世紀時期流傳到阿拉伯,在阿拉伯進行了改進,然後在13世紀傳播到西方。這就是我們今天最廣泛使用的阿拉伯數字,它包含0~9一共十個符號。

十進位的特點是,有10個不同的記號,遇到10的整倍數進位。

 

在構造儲存和處理資訊的機器時,不適於使用十進位,而適合使用二進位。它通過一些物質的物理特性,如電壓的高或低,通電或者不通電,打孔帶的有孔或者無孔等方式來記錄資訊。

二進位的特點是,有2個不同的記號,遇到2的整倍數進位。

這種簡單的方式,對於工業製造提供了穩定的基礎,現在的工藝,已經可以在一個晶片上整合千萬級甚至億級的電路了。

但是使用電腦所表示的資訊,在進行數學計算時可能並不是那麼精確。

首先電腦的數值計算是有範圍的,超出範圍就可能得到錯誤的結果;

其次電腦的計算是有精度限制的,超出精度就會出現誤差;

最後電腦的計算並不符合某些數學定律。

因此我們要從電腦資訊的儲存入手,理解電腦的資訊儲存特點,以避免出現錯誤的計算。

二資訊儲存

為了電腦資訊表示的方便,還經常使用八進位,十六進位。

十六進位的特點是,有16個不同的記號,遇到16的整倍數進位。

十六進位的符號,除了十進位的0~9之外,還包含,a,b,c,d,e,f等字元。每個字元,對應四位bit,例如十六進位的0Xf,用二進位表示,就是1111。即十進位的15。

 

我們在安裝windows系統時,要分32位,64位。有些軟體,也分32位,64位。那這個“位”到底是什麼意思呢?

相對於32位技術而言,64位技術的這個位元指的是CPU GPRs(General-Purpose Registers,通用寄存器)的資料寬度為64位,64位指令集就是運行64位元據的指令,也就是說處理器一次可以運行64bit資料。

如果CPU是64位的,但是作業系統是32位的,那CPU的的效能就無法充分發揮出來,最直觀的感覺就是,安裝32位系統比64位系統還慢。當然這還要其他的硬體滿足安裝64位系統的基本要求。

32位和64位的系統,對於我們日常應用來說,32位系統,只能識別大概4G的虛擬位址空間,系統實際上可用記憶體為3.25G。而64位系統,理論上可以支援2的64次方的虛擬位址空間,但目前的系統最大支援128G的記憶體,而目前主流主板,一般支援到32G的記憶體。

 

這是我工作中用到的一台PC Server的配置。使用的是64位cpu,64位的系統,以及32G的記憶體。

在這裡,我們需明確一個概念,就是機器字長:

32位系統,一個機器字長度是32bit;

64位系統,一個機器字長度是64bit。

 

對於C語言而言,每種資料都有其特定的類型,但資料本身都是由0,1組成的bit序列,那類型是怎麼區分出來的呢?

其實不同的資料類型,除了上下文之外,只在長度上有區分。

下面列表列出了,C常見數實值型別佔用幾個字元

C聲明

32位系統(字元)

64位系統(字元)

Char

1

1

Short int

2

2

Int

4

4

Long int

4

8

Char*

4

8

Float

4

4

double

8

8

注意指標類型,無論指向的是什麼具體類型,都佔一個機器字長。

 

對於超過1個字元長度的資料類型,機器在實際儲存的時候,有兩種方式:

一種是小端法,一種是大端法。

所謂小端法,就是指這個資料的最低記憶體位置儲存的是低有效位。

而大端法,就是表示這個資料的最低記憶體位置儲存的是高有效位。

 

如果我們想讓電腦儲存一個字串,需要對資料進行編碼。編碼的方式,最常用的,是用於表示英語字元的ASCII編碼,

此外,還有一種比較通用的編碼,就是Unicode編碼。它的每個字元佔16bit,即2個位元組。它可以表示除英語之外很多國家的語言字元。

Java和.NET都是採用的這種字元集來編碼的。

 

以前我們說過關於hello world程式的二進位表示。其實對於不同的機器,其二進位也是不同的,而且無法相容。

因此如果想用一種語言進行程式編寫,然後在不同架構不同系統的電腦上運行,就需要進行特殊處理。例如Java的JVM,就是可以將Java代碼根據不同的機器架構編譯成對應的機器代碼序列。從而實現Java的“一次編譯,到處運行”的跨平台性。

 

說完了數值和字元,下面說一說關於二進位的數學特性。

電腦儲存資料是使用二進位,它與數學中的“布爾代數”非常相似。在布爾代數中,只有2個值:true或false。而電腦語言中,一般都包含一種稱為Bool的資料類型。研究這種資料類型,對於我們學習電腦的儲存和運算是有協助的。

列出bool類型的一些數學特點。

 

 

在C語言中,對於資料可以進行如下三種布爾運算:

1按位布爾運算。

2邏輯運算與短路邏輯運算。

3移位元運算:左位移運算,邏輯右位移運算,算術右位移運算。

 

這些運算在現在進階電腦語言中基本都有,其基本規則與C語言都基本是一致的。

 

三總結

本節主要講了電腦的資訊儲存的形式,以及一些基本的運算特性。

電腦將資訊編碼為bit位的序列。有不同的編碼方式用來表示整數,實數和字串。不同架構的電腦在編碼數字和多位元組資料時所產生的bit序列是不同的。

布爾運算是電腦中的重要運算方式。

電腦系統的概念(2)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.