使用者模式:應用程式都是執行在使用者區域
核心模式:作業系統的核心,裝置驅動程式,這些都是在核心模式下執行的
大小端與進製關係
乙個位只能表示0,或者1兩種狀態,簡稱bit,乙個位是乙個bit
乙個位元組為8個二進位制,稱為8位,簡稱byte,8個位元是乙個位元組
乙個字為2個位元組,簡稱word。
兩個字為雙字,簡稱dword
進製:c語言當中0前置表示八進位制,0666;用0x前置表示十六進製制
原碼補碼和反碼
原碼:將最高位做為符號位(0代表正,1代表負),其餘各位代表數值本身的絕對值
+7的原碼是00000111
-7的原碼是10000111
+0的原碼是00000000
-0的原碼是10000000
反碼:(負數變)
乙個數如果值為正,那麼反碼和原碼相同
乙個數如果為負,那麼符號位為1,其他各位與原碼相反
+7的反碼00000111
-7的反碼11111000
-0的反碼11111111
補碼:(減法可用加法)
原碼和反碼都不利於計算機的運算,如:原碼表示的7和-7相加,還需要判斷符號位。
正數:原碼,反碼補碼都相同
負數:最高位為1,其餘各位原碼取反,最後對整個數 + 1
-7的補碼:10000111(原碼)
111111000(反碼)
11111001(補碼)
+0的補碼為00000000
-0的補碼也是00000000
補碼符號位不動,其他位求反,最後整個數 + 1,得到原碼
用補碼進行運算,減法可以通過加法實現
7-6=1
7的補碼和-6的補碼相加:00000111 + 11111010 = 100000001
進製捨棄後,剩下的00000001就是1的補碼
-7+6 = -1
-7的補碼和6的補碼相加:11111001 + 00000110 = 11111111
11111111是-1的補碼
大端對齊和小端對齊
對於arm,intel這種x86構架的複雜指令cpu,整數在記憶體中是倒著存放的,低位址放低位,高位址放高位,小端對齊。
但對於unix伺服器的cpu,更多是採用大端對齊的方式存放整數
機器語言:由二進位制指令組成,是計算機可直接執行的語言。不可以乙隻,只能在某種型別的計算機上執行、
組合語言:
高階語言:可移植
•源程式: 用高階程式語言寫成的程式。
•目標程式: 源程式的機器語言版本。
•編譯器: 把高階語言寫成的源程式轉化為機器語言的目標程式的程式
c語言程式的過程都是由語句組成的。語句是程式的基本書寫單位和執行單位,資料及其操作都是用語句的形式描述的。c語言中的語句可分為如下五種:(1)表示式語句(2)宣告語句(3)空語句(4)塊語句(5)流控制語句
c源程式的結構特點
1.乙個c語言源程式可以由乙個或多個原始檔組成。
2.每個原始檔可由乙個或多個函式組成。
3.乙個源程式不論由多少個檔案組成,都有乙個且只能有乙個main函式,即主函式。
4.源程式中可以有預處理命令(include 命令僅為其中的一種),預處理命令通常應放在原始檔或源程式的最前面。
5.每乙個說明,每乙個語句都必須以分號結尾。但預處理命令,函式頭和花括號「}」之後不能加分號。
6.識別符號,關鍵字之間必須至少加乙個空格以示間隔。若已有明顯的間隔符,也可不再加空格來間隔。
在c語言中使用的詞彙分為六類:識別符號,關鍵字,運算子,分隔符,常量,注釋符等。
從程式流程的角度來看,程式可以分為三種基本結構,即順序結構、分支結構、迴圈結構。
c語言的缺陷:
c語言不是強型別語言,缺少對字串和記錄的處理,缺少執行期間檢查,為了追求效率,執行期間,c不檢查諸如陣列越界之類的錯誤。
c中很多地方容易使得程式設計師產生誤解,諸如運算子優先順序規則,c一些地方定義不完備,執行結果因編譯器不同而改變。
注意細節:變數定義時,一定要初始化,不要有多餘的變數,定義了就要使用,不使用就不定義
1.include標頭檔案。在c語言當中,任何庫函式呼叫都需要提前包含標頭檔案
《標頭檔案》,代表讓c語言編譯器去系統目錄下尋找相關的標頭檔案
「標頭檔案」,代表讓c語言編譯器去使用者當前目錄下尋找相關標頭檔案
2.return:乙個函式遇到return就終止(生命週期到了)
gcc –e –o a.e a.c
預編譯a.c檔案,生成的目標檔名為a.e
預編譯是將include包含的標頭檔案內容替換到c檔案中中,同時將**中沒用的注釋部分刪除
-s彙編將c語言轉化為組合語言,-c編譯將**編譯為二進位制的機器指令,鏈結gcc沒有任何引數,代表就是鏈結
C語言知識總結(一)
第一章 概述 1 c語言的基本知識 1.1 c語言的執行步驟 編輯 程式 的錄入,生成源程式 c 編譯 語法分析查錯,翻譯生成目標程式 obj 語法或邏輯錯誤,從第乙個開始改,變數定義,語句格式,表示式格式等 鏈結 與其他目標程式或庫鏈結裝配,生成可執行程式 exe 執行1.2 main函式的基本知...
C語言知識總結
分析靜態儲存區 堆 棧 靜態儲存區 編譯時由編譯器分配,由系統釋放,其存放在的是全域性變數 static變數和常量。對 由程式設計師自己分配釋放,若不手動釋放程式結束才釋放。若對分配空間不用時不釋放而一味分配,則可能造成記憶體洩露,其容量取決於虛擬記憶體,較大。區別 1 棧是由高位址向低位址擴充套件...
C語言知識總結
第一章 1 程式語言的發展 機器語言 組合語言 高階語言 2 軟體開發的基本步驟 分析問題,激勵數學模式 確定資料的結構和演算法 程式語言 除錯程式 3 演算法 特徵 有窮性 確定性 有效性 有零個或多個輸入 有乙個或多個輸出 分類 數值運算演算法和非數值運算演算法 4 編碼實現 a.編寫源 b.將...