計算機如何儲存乙個資料型別的物件?

2021-09-29 09:43:44 字數 972 閱讀 3418

先記錄幾個小知識點

在大多數的計算機,最小位址定址單位是位元組,而不是位。

機器級別程式把記憶體看作是乙個很大位元組陣列,稱為虛擬記憶體,所以虛擬記憶體位址的集合就是虛擬記憶體空間。

對於乙個字長w的機器,它虛擬記憶體可定址範圍是0-2^w-1,乙個32位字長的虛擬位址空間是4gb。

比如乙個int 物件 0x01234567

首先最小的記憶體單位是乙個位元組,也就是8位,那乙個位元組可以儲存多少個十六進製制的數字呢?

因為計算機可以用4位來表示乙個十六進製制的數字,所以乙個位元組可以儲存2個十六進製制的數字!

假設現在儲存的位址從0x100開始,那麼0x100這個位置儲存0x01還是0x56,還是別的呢?

其實在計算機系統裡,有兩種不同的儲存順序,乙個叫大端法,乙個叫小端法。

大端法,顧名思義,從高位的順序開始儲存,也就是說0x100開始,儲存0x01 0x23 0x45 0x67

小端法,也相應從0x100開始,儲存0x67 0x45 0x23 0x01

大端法位址

0x100

0x101

0x102

0x103

儲存內容

0x12

0x23

0x45

0x67

小端法位址

0x100

0x101

0x102

0x103

儲存內容

0x67

0x45

0x23

0x01

需要注意一下的是,對於32bit和64bit的機器,int物件都是佔4位元組。但是對於long型,在32bit機器上佔4個位元組,但是在64bit機器上卻是佔8位元組的。

不管機器採用哪種順序儲存,程式設計師也不可見,但是不管哪種型別,程式編譯出來的結果都是一樣的。

不過不同儲存順序有時候會有一些問題。不過我覺得對於我來說,以後估計也不會遇到。

對C 資料型別計算機內儲存的理解

在看primer c 這本書的時候一直有乙個地方不理解 下面談談我自己的理解,希望大家能指導一下 通常計算機中儲存資料都是以上圖中的方式來儲存的,上圖中那四塊可以理解為乙個由4個位元組組成記憶體塊,其中乙個位元組等於8位 位元,所以上圖中的記憶體塊佔32位 位元 框框前面的數字應該是指向記憶體的位址...

細談資料型別以及計算機儲存資料機制 一

include int main 無意看到以上 發現自己也是一知半解的,這才決定弄透一點。以下均為自己對網上資料的理解,希望對大家能有所幫助,有誤之處,還請海涵。首先列舉下資料型別 signed int unsigned int float double char 注意點 1.宣告無符號整型時,我們...

關於計算機中資料型別儲存的對齊問題

許多計算機系統對基本資料型別的合法位址做出了一些限制,要求某種型別物件的位址必須是某個值k 通常是2,4 8 的倍數,這種對齊限制簡化了形成處理器和儲存器系統之間介面的硬體設計,並且提高了訪問效率,雖然可能浪費了空間。所以了解對齊,可以使我們在不降低效率的情況下以最低的空間儲存資料 不同的硬體結構對...