1. 程式人生 > >深入理解計算機系統(二)--信息的表示和處理

深入理解計算機系統(二)--信息的表示和處理

科學 單獨 深入理解計算機系統 輔助 指針 值範圍 二進制表示 程序 不同的

一、信息的表示
現代計算機中的信息都是使用二進制的數字進行表示,通常來說,單個的位不是非常有用,但是當把位組合在一起,再加上某種解釋,就能夠表示任何有限集合的元素。
三種重要的數字表示:
1、無符號編碼
基於傳統的二進制表示法,表示大於或者等於零的數字。

2、補碼編碼
表示有符號整數的最常見的方式,有符號整數就是可以為正或者為負的數字

3、浮點數編碼
表示實數的科學記數法的以2為基數的版本。

計算機的表示法是用有限數量的位來對一個數字編碼,因此當結果太大時以至於不能表示時,某些運算就會溢出。整數運算和浮點數運算會有不同的數學屬性是因為它們處理數字表示有限性的方式不同----雖然整數的表示只能編碼一個相對較小的數值範圍,但是這種表示是正確的;而浮點數雖然可以編碼一個較大的數值範圍,但是這種表示只是近似的。

二、信息的存儲
大部分計算機中使用8位的塊(也就是字節)作為最小的內存單位,而不會單獨訪問內存中的位。機器級程序將內存視為一個非常大的字節數組,稱為虛擬內存。內存中的每個字節都由一個唯一的數字來標識,稱為它的地址,所有可能地址的集合就稱為虛擬地址空間。
每個程序對象可以簡單的視為一個字節塊,而程序本身就是一個字節序列。
1、十六進制表示法
二進制、十進制表示法對於描述位模式來說都不是非常方便。二進制表示法太長,十進制表示法則與位模式的互相轉化比較麻煩。替代方法則是使用十六進制。,來表示位模式。

2、字數據大小
每臺計算機都有一個字長,指明指針數據的標稱大小,其實就是計算機是32位還是64位。32位字長限制虛擬地址空間為4GB。

三、尋址和字節順序
對於跨越多字節的程序對象,有以下兩個規則:
1、程序對象的地址是啥?
2、在內存中如何排列這些字節?
在計算機中,多字節對象被存儲為連續的字節序列,對象的地址則為所使用字節中最小的地址。

四、表示字符串
每個字符都由某個標準編碼來表示,不同的機器類型使用不同的且不兼容的指令和編碼方式,即使是完全一樣的進程,運行在不同的操作系統上也會有不同的編碼規則,因此二進制代碼是不兼容的。二進制代碼很少能在不同機器和操作系統組合之間移植。
計算機系統的一個基本概念就是,從機器的角度來看,程序僅僅只是字節序列。機器沒有關於原始源程序的任何信息,除了可能有些用來幫助調試的輔助表以外。

深入理解計算機系統(二)--信息的表示和處理