1. 程式人生 > >記憶體及資料儲存

記憶體及資料儲存

gcc的使用

1.計算機能識別的唯一語言是計算機語言

語言的發展:

機器語言

二進位制資料,11010101

組合語言

用符號表示一組操作  add  call mov  直接操作硬體速度快

高階語言

以語句為單位進行操作  ===>  可移植

C語言是中級語言,具體彙編的特性,同時也具備高階語言可移植等特性。

不管什麼語言,要想被計算機執行,必須轉換成機器碼

 

編譯器:將原來的程式碼(原始碼)編譯成

計算可執行的程式碼(程式)

相同的程式碼經過不同的編

 

 

 

 

 

譯器編譯,可以被不同的裝置所執行

Linux系統常用的編譯C語言的編譯器是:gcc

 

2.C語言程式便宜步驟

預處理(預編譯)

處理 “#” 開頭的內容,進行替換、去掉註釋。。。。s

生成預處理檔案,字尾名是 .i

編譯

編譯器對程式碼進行編譯   ----> 最複雜.耗時最長的過程

生成彙編檔案,字尾名.s

彙編

把彙編檔案編譯二進位制目標檔案

生成目標檔案,字尾名是.o

連結

把多個目標檔案按照一定規則整合成一個可以執行的程式

生成的是最終的可以執行的程式

 

 3.gcc的命令

gcc -E

對檔案進行預處理,生成預處理檔案

gcc -S

對檔案進行編譯,生成彙編檔案

gcc -c

對檔案進行彙編,生成目標檔案

gcc  -o

給生成的檔案重新命名

gcc  預設生成的檔案 檔名是 a.out

如果想自定義生成的檔名,編譯的時候加 -o  後面加名字

 

4.程式執行

 

 

./a.out

./不是命令,是當前路徑的寫法,代表當前目錄

/mnt/hgfs/code/171/4/a.out

絕對路徑寫法

 

 

記憶體

程式:

1、沒有執行的程式

就是一堆程式碼,存在儲存裝置中,比如:硬碟、U盤、手機….

2、執行起來的程式

程式會被讀到記憶體中執行,記憶體中存改程式的可執行程式碼、資料….

 

儲存單位:

1bit

位,位元,是一個二進位制數字,只能表示 0 或者 1,使用的單位是  b

2Byte

位元組,使用的單位是  B       1B  =  8b       ====>   是記憶體的最小儲存單位

3KB

1KB    =   1024B          

4MB

1MB   =   1024KB        

5GB

1GB    =   1024MB    

    

 

記憶體最小的儲存單位是位元組,如何管理?

記憶體為每個位元組分配了一個編號,類似於人的身份證號 ===>  這個編號叫做記憶體的地址

編號?   ===>  是一個數字   ====>  是否有範圍??

記憶體為位元組分配編號,要統一編號,這個編號的位數也是固定的

132位系統

編號的位數是32位     進位制是二進位制     000001…… 10101010(32個)  ==>  4B

264位系統

編號的位數是64位     進位制是二進位制     000001…… 10101010(64個)  ==>  8B

 32位系統  ===>   記憶體編號是4位元組編號   ====>  最大能有多少個位元組?

範圍: 0000…00000(32個0)  ----->    1111….1111(32個1)

0                                         ----->        2的32次方-1

總共  2的32次方個位元組===4GB

 

資料儲存

記憶體存的是二進位制資料,以1個位元組為例:

1.無符號數:只有正數,不帶正負號

範圍: 0000 0000   ----->   1111 1111

                      0              ------->         255

 

2.有符號數:帶正負號的數

記憶體取最高位為符號位

最高位

型別

0

正數

1

負數

存:

正數在記憶體中的存的資料本身

負數:先轉換成二進位制,對每一位取反(符號位不變),然後加1

比如:

   5:  實際在記憶體中存的值是  0000 0101

 -5:  1000 0101(-5) ===>    1111 1010(取反) ===> 1111 1011(+1)

  實際在記憶體中存的值是 1111 1011

 

0在記憶體中表示 :0000 0000

-0在記憶體中表示:人為規定 -0 就是 -128

就是說  1000 0000  這個值表示 -128

有符號數取值範圍:1000 0000  ---- 01111 1111

      -128        ----      127

 

有符號數,在一個位元組範圍內:

127+1 

127在記憶體中的儲存: 0111 1111

 1    在記憶體中的儲存: 0000 0001                      

和:1000 0000====》-128  

1111 1111 代表 -1