c基礎 (一)

1.c編譯過程

1.源文件.c      gcc -E a.c -o a.i     預處理(1.展開頭文件    2.刪除註釋    3.條件編譯     4.宏定義的展開)    ------>>  2.源文件.i

2.源文件.i       gcc -S a.i -o a.s     編譯(1.檢查語法    2.將c語言轉換爲彙編語言)    ------>>                                      3.源文件.s

3.源文件.s      gcc -C a.s -o a.o    彙編(將彙編語言轉換爲二進制機器語言)           ------>>                                       4.二進制.o

4.二進制.o      gcc a.o -o  a.exe    鏈接(連接不同操作系統下的庫文件)                   ------>>                                      5.可執行文件

一步編譯: gcc -o  a.exe a.c

2.進制轉換

 1. 10進制與其他進制的轉換

    10進制 轉換爲 任何進制 :    轉換爲N進制   就除以 N  ,取餘數  ,將餘數倒序排列幾位    N 進制數據               (除數取餘法)

    N進制 轉換爲 10進制 :   從第一位開始     數值* N ^ 0   冪數從零開始增大  然後全部相加 結果爲 十進制數    (權值相加法)

 2.二進制與其他進制轉換

    使用 8 4 2 1 原理:    八進制  (三位一個)       十六進制  (四位一個)       列如  101  010    就是    4+1  = 5   +2   =    7(八進制)

3.十六進制與八進制轉換 利用二進制轉換

3.原碼 , 反碼 , 補碼

  1.一個有符號的整型數據可以分爲兩部分一部分是符號位、一部分是數字位

 
  2. signed int a= 1986(有符號標識 signed可以不用寫)   unsigned int a= 1986(有符號標識 signed可以不用寫)


  3.列如二進制:11111000010                           


  1986原碼: 0000 0000 0000 0000 0000 0111 1100 0010             32位
  -1986原碼:1000 0000 0000 0000 0000 0111 1100 0010               第一位代表符號位   1爲負數


  1986反碼: 0000 0000 0000 0000 0000 0111 1100 0010
  -1986反碼:1111 1111 1111 1111 1111 1000 0011 1101                   負數反碼爲整數的反碼的      1變0    0變1


 1986補碼: 0000 0000 0000 0000 0000 0111 1100 0010
 -1986補碼:1111 1111 1111 1111 1111 1000 0011 1110                      負數補碼爲整數的補碼的+1

 1 0000 0000 0000 0000 0000 0000 0000 0000       相加爲33位,溢出捨棄一位,所以還是0

溢出:在數據進行操作的時候會導致超出數據類型大小,會向前位進1,多於原始數據類型大小,會被系統自動捨棄 保留從後面開始數據類型大小的位數   

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章