《深入理解計算機系統》筆記 資訊的表示和處理

2021-08-29 01:21:58 字數 2752 閱讀 9141

資訊的儲存

十六進製制表示法

字資料大小

定址和位元組順序

資料型別

字串的表示

**的表示

資訊是客觀事物的反映,是經過處理加工後得出的資料

資料是客觀事物的記錄。

計算機內所有的資訊均以二進位制的形式表示,也就是由值0和值1組成的序列。

大多數計算機使用8的塊(位元組),來作為最小的可定址的儲存器單位,而不是在儲存器中訪問單獨的位。

("位(bit)「是電子計算機中最小的資料單位,每一位的狀態只能是0或1。8個二進位制位構成1個"位元組(byte)」)

也就是說,我們訪問計算機最小的單位是八個位構成的位元組,而不是值0或值1的單個位。程式會將儲存器視為乙個非常大的位元組陣列,稱為虛擬儲存器(virtual memory)。儲存器的每乙個位元組都由唯一的數字來標識,也就是我們說的位址(address),所有可能位址的集合稱為虛擬位址空間(virtual address space)

在二進位制表示法中,它的值域為 00000000——11111111;

如果用十進位制表示就是0——255。

但二進位制表示法太冗長,而十進位制表示法與位模式的互相轉化又比較麻煩對於用來表示計算機的位模式來說都不是很方便。

位模式: 計算機中所有二進位制的0、1**所組成的數字串

這時候 十六進製制數產生了,十六進製制使用數字『0』~ 『9』,以及字元 『a』~ 'f』來對應表示『10』~『15』。一般是 0x 或者 0x 開頭。逢16進1。

比如十進位制數 175,我們用十六進製制表示為 0xaf。

計算機進行資料處理時,一次訪問、加工和傳送的資料長度稱為(word),乙個字通常由乙個或多個(一般是位元組的整數字)位元組構成,字的位數叫做字長(word size),每台計算機都有乙個字長,用來指明整數和指標資料的標稱大小(nominal size)。

乙個或多個位元組組成乙個

字長是cpu的主要技術指標之一,指的是cpu一次能並行處理的二進位制位數,字長總是8的整數倍,pc機的字長為16位(早期),32位,64位。

檢視處理器位數方法: 開啟命令提示符,然後輸入 systeminfo,可以看到處理器的位數是 64 位

在程式設計時,考慮到系統的移植性,要注意不同位數下的資料型別的位元組數差異。

對於跨越多個位元組的程式物件(程式物件指令、資料或者控制資訊等)來說,我們需要制定兩個規則:

1、這個物件的位址是什麼

2、在儲存器中如何排列這些位元組

而在幾乎所有的機器上,多位元組物件都被儲存為連續的位元組序列,物件的位址為所使用位元組中最小的位址。

他們都遵循兩個排列規則:

小端法:從最低有效位元組到最高有效位元組的順序儲存物件(最低有效位元組在最前面)

大端法:和小端法相反。

可以看到,資料的儲存是連續的,如"0x100"~「0x103」。

但由於排列位元組的方式有兩種,那麼這就產生問題:當小端法機器產生的資料被傳送到大端法機器或者反方向傳送的時,接收程式裡的位元組成了反序。

因此網路應用程式的**編寫必須遵循已建立的位元組順序的規則,以確保傳送方和接收方都是遵循統一的網路標準防止資料錯誤。

資料型別的出現是為了把資料分成所需記憶體大小不同的資料。程式設計的時候對於不同情況定義不同資料型別,然後編譯器需要申請記憶體(申請記憶體根據資料型別或大或小)。

那麼根據上面的定址和位元組順序,計算機在解釋乙個資料型別的值時主要有四個因素:

位排列規則(大端或者小端)、起始位置、資料型別的位元組數、資料型別的解釋方式。

對於特定的系統,前兩種因素都是特定的;

而對於後兩種因素(資料型別的位元組數、資料型別的解釋方式),會改變乙個資料型別的值的最終結果,這就是強制型別轉換

在計算機中,對非數值的文字和其他符號進行處理時,要對文字和符號進行數位化,即用二進位制編碼來表示文字和符號。

常見的西文字元最常用到的編碼方案有ascii編碼。

字元 『a』 的 ascii 碼十進位制值為 97,在計算機中用二進位制表示就是 01100001

程式其實就是乙個二進位制序列的簡單描述,編譯器會幫我們將其翻譯成對應的機器所認識的二進位制序列。

hello.c到hello.i到hello.o的轉變

預處理器cpp->編譯器ccl->彙編器as、

深入理解計算機系統 筆記

cu control unit cpu暫存器,晶元的快取記憶體sram 晶元外的快取記憶體sram 主存dram 本地硬碟 網路分布式檔案系統。拷貝次數越少,越好,netty,零拷貝 dma控制器與cpu分時使用記憶體的三種方式 程序 作業系統對執行程式的一種抽象,乙個系統上,多個程序都好像獨佔硬體...

深入理解計算機系統

關鍵路徑是在迴圈的反覆執行中形成的資料相關鏈。迴圈展開是一種程式變換,通過增加每次迭代計算的元素的數量,減少迴圈的迭代次數。重新結合變換能夠減少計算中關鍵路徑上操作的數量,通過更好地利用功能單元的流水線能力得到更好的效能。浮點運算不保證是可結合的,通常迴圈展開和並行地累積在多個值中,是提高程式效能的...

《深入理解計算機系統》

知乎 深入理解計算機系統 這本書需要什麼水平能看懂?15 213 18 218 15 513 introduction to computer systems schedule fall 2016 鏈結失效則 cmu15 213的課程主頁,有ppt,還有錄影,主講人就是這本書的作者。備註 備註 詳細...