深入理解計算機系統 數值的儲存

2022-08-21 17:12:11 字數 2120 閱讀 6556

關於計算幾種的儲存方式,總結如下:

1、只有

ascii

字元構成的檔案稱為文字檔案,

ascii

用乙個位元組表示乙個字元(

0-127

),其他的所有檔案成為二進位制檔案。每種語言都有自己的編碼標準,有了表,計算機就能將任何的字元對映到計算機中,進行二進位制的處理。

2、編譯的四個階段:預處理(

.i檔案)

-》編譯

(.s彙編檔案

)-》彙編

(.o檔案

)-》鏈結

(可執行檔案

)。3、如何判斷機器是大端還是小端:

定義乙個函式,以

unsigned char *

的陣列指標為引數,依次傳入

int、

float

等變數的位址,這時指標陣列會把

int看做乙個

4個位元組的陣列進行遍歷輸出,經過測試,win7採用的是小端方式,所謂大端就是大的在低位址,輸出時俺正常的數輸出。

4、交換操作:a = a^b, a= a^b,b=a^b;異或的基本屬性:a^a=0,a^0=a;

5、int ival = 0x12345678 >> 32;

相當於移動

322=0

位,當位移的範圍超過型別的範圍時,進行取模運算。

6、正數:在計算機中正常儲存,負數:在計算機中一般儲存的是補碼,就是正數的反碼+1。

7、無符號數轉為有符號數:

if< 0 2w+

負數else

一樣。w

為位數。

有符號數轉為無符號數:

if (w

位==1)

正數-2w else

一樣。w

為位數。

其本質沒有變化,只是在讀取的時候,把第一位看做不同的符號。

8、型別的最小值

=-型別的最大值-1;

9、short sx = -12345;unsigned uy = sx;

轉換過程,先把

sx擴充至

32位,在轉換為

unsigned

型別,也就是說,先擴充位數,在進行型別的轉換。

10、一定要注意比較兩邊的型別,很容易出現

unsigned

與signed

的比較,導致出錯。最好不適用無符號數。

11、無符號數加法溢位:直接取餘。

有符號加法溢位:正溢位:

x+y-2w

,負溢位:

x+y+2w。w

為位數。

補碼非:補碼的反碼+1。

-5的補碼非為5。

12、無符號乘法:結果取餘。

補碼的乘法:兩個有符號數相乘,先把有符號數轉為無符號數,按照無符號乘法進行,再把無符號數轉為有符號數。更為直接的方式是,把兩個有符號數的結果,寫出完整的補碼形式,再擷取最低位。

13、乘以常數,常常把常數轉化為二進位制,x*7=x*(8-1),進行移位(

x<)

+(x《或者(

x<)

-(x<

14、浮點數表示:

單精度:

1:符號位,

8:階碼,

23:尾數。

雙精度:

1:符號位,

11:階碼,

52:尾數。

15、浮點數表示分類:

a)當階碼不全為

0且不全為

1時,屬於規格化值:

m = 2

單精度實際儲存的階碼值

-0111 1111

(127

)相當於

10的幾次方。

m = 2

雙精度實際儲存的階碼值

-011 1111 1111

(1023

)相當於

10的幾次方。尾數=

實際儲存的尾數的小數值+1值

=尾數x mb)當階碼全為

0時,非規格化值:

m =2 1-0111 1111尾數=

實際儲存的尾數的小數值

c)特殊值:

階碼全為

1且尾數全為

0,表示無窮大。

階碼全為

1尾數不為

0,便是

nan,即不是乙個數。

深入理解計算機系統 儲存結構

1 計算機的儲存結構是金字塔形的,一般來說cpu的週期時間 暫存器 高速sram 說明 ssd是一種基於快閃儲存器的儲存技術,乙個快閃儲存器由塊組成,每個塊又由頁組成,資料以頁為單位讀寫。ram 分為sram和dram,dram需要週期的進行重新整理,ram是易失性儲存器,一旦斷電全部消失。rom ...

深入理解計算機系統 陣列儲存

首先我們要知道,陣列的元素儲存的位址是連續的。一維陣列很好理解,接下來看看二維陣列的空間分布 對於上面這個例子,我們可以將a看成具有五個元素,且每個元素都是3個int長度的一維陣列儲存。分析例子 int main for i 0 i 5 i return sum 翻譯成彙編 main pushl e...

深入理解計算機系統

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