關於計算幾種的儲存方式,總結如下:
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...
深入理解計算機系統
關鍵路徑是在迴圈的反覆執行中形成的資料相關鏈。迴圈展開是一種程式變換,通過增加每次迭代計算的元素的數量,減少迴圈的迭代次數。重新結合變換能夠減少計算中關鍵路徑上操作的數量,通過更好地利用功能單元的流水線能力得到更好的效能。浮點運算不保證是可結合的,通常迴圈展開和並行地累積在多個值中,是提高程式效能的...