c語言進階day_01
數據類型
1.1內存
內存是線性的,按照字節為單位進行編址的(8b)
1.2補碼
補碼特點(互逆):
0的補碼是0
符號位同普通位一起參與運算
補碼可以使加減乘除都變成加法
8位數據(【-128,127】)表示的範圍是由補碼的編碼規則決定的
註意:-1(1111 1111) -128(1000 0000) 127(0111 1111)
1.3數據類型劃分
Char 0-128 對應ascii表
為什麽需要數據類型?
數據類型提供了申請內存單元的大小和訪問規則。
1.4類型轉換
1.4.1小數據賦給大數據
底端對齊/符號自動填充
正數擴充0/負數擴充1
1.4.2大數據賦給小數據
int a=127;
char b=a;
a=b=127;
int a=255;
char b=a;
a=255;b=ffffffff;
以上沒有發生數據丟失,僅僅截斷
1.4.3隱式轉化
整形提升:在32位機器中,所有低於32位的整形數據——>32位整形數據。
混合提升:
補碼+類型轉化+符號填充
Unsigned int填充0000
科普下補碼運算:
正數的補碼:與原碼相同
負數的補碼:符號位為1,其余位為該數絕對值的原碼按位取反;然後整個數加1。
補碼相減:
減法:
整數: [A-B]補 = [A]補 + [-B]補 (mod 2^(n+1))
小數: [A-B]補 = [A]補 + [-B]補(mod 2)
由[-B]補求解[B]補,或者由[B]補求[-B]補,都是連同符號位每位求反加一。
1.5內存管理
命令行參數:
Int main(int argc(輸入數據個數)四個字節,char * argv[](輸入數據)12個字節)
1.6數組
數組清零:int array【10】={0};——>第一個數據設為0,後面自動初始化為0;
當然數組以及二維數組,指針數組還有許多問題,希望大家可以多多交流!!!
下周學習,更c語言提高day_02 謝謝(*^_^*)
c語言進階day_01