1、計算機中的進製
2進製:逢二進1 0 1
8進製:逢八進1 0 1 2 3 4 5 6 7
10進製:逢十進1 預設的進製 0 - 9
16進製制:逢十六進1 0 - 9 a b c d e f (記憶體的位址格式)
2、進製的轉換問題
三個要素:
數字(0-7)、
基數(每一位能取值的個數)、
位權(數碼*基數^數字)、 101 = 1*2^0+0*2^1+1*2^2
數碼(每一位設定)
轉換:有得時候轉換為人能識別的數制,要操作計算機寫計算機可以識別的語言(二進位制)
10 -> 2 : 除2取餘法,把10進製數除以2,然後取得餘數的序列。再倒序
2 -> 10 : 全部位的位權相加 101 = 1*2^0+0*2^1+1*2^2
2 --> 16 : 4合1法。整數部分從右向左4位結合成一位。小數部分從左向右4位結合1位,不足部分補0
16 -->2 : 1拆4法。 16進製制的1位拆成二進位制的4位
2 --> 8 : 3合1
8 --> 2 : 1拆3
8 --> 10 : 8--> 2 --> 10
16 --> 10: 16 -->2 -->10
3、原碼、反碼和補碼
1)機器碼、真值
乙個數的二進位制的表示機器碼
把乙個數的二進位制轉換為10進值得值真值
2)計算資料的儲存
儲存的時數的補碼
數是有正負性
正數:最高位用0表示符號位
負數:最高位用1表示符號位
3)原碼、反碼、補碼:
正數:就是其二進位制表示 +1 00000001
負數:二進位制的最高位是1 -1 10000001
反碼:
正數:就是其二進位制表示 +1 00000001
負數:符號位不變,其它位逐位取反 -1 11111110
補碼:
正數:就是其二進位制表示 +1 00000001
負數:反碼+1 -1 11111111
注意:補碼的真值不等於原碼的真值的
4、為什麼要使用補碼?
主要是位了優化計算機中的減法
5、補碼的深入解說
1-1 = 1+(-1)
6、位運算子
二進位制數碼之間的運算
6個符號
& 按位與:逐位運算,有0則為0,同1則為1
| 按位或:有1為1
^ 按位異或:同樣為0。不同為1
~ 按位的取反:0變1。1變0
>> 按位右移:把乙個數的所有的二進位制位所有向右移動指定位數10>>2;
注意:移出的位捨棄,高位補符號位,可能讓乙個數為0
<< 按位左移
把乙個數的所有的二進位制位所有向左移動指定位數
注意:移出的位捨棄。低位補0。可能會改變乙個數的正負性
11&2
1011
& 0010
--------------
0010
技巧:
不論什麼數和1按位&操作。得到這個數的最低位
偶數的最低位 0
奇數的最低位 1
7、變數在記憶體中儲存的細節
記憶體分配給變數的儲存空間是從高到低
乙個變數低位低位址
高位存放高位址
8、char型別
char
char常量 'a','b',
以int型進行儲存,佔4個位元組
char變數
C語言瘋狂講義 (四)C語言分支語句
1 程式的結構 程式預設從上到下順序執行 順序結構 程式的結構 順序結構 分支結構 迴圈結構 2 if分支語句 程式執行的過程中可以有多個選擇 格式 if 表示式 進行表示式的求值 如果表示式的值為非0 真 會執行語句塊 0 假 不會執行語句塊,3 if分支語句的幾種形式 1 最簡單的,要不執行,要...
C語言瘋狂講義 (五)C語言迴圈語句
1 迴圈控制 迴圈是程式語句的一種結構,當條件滿足的時候,一直重複執行某一段 當條件不滿足的時候,需要退出迴圈 正常情況下,夠成迴圈結構三個要素 1 迴圈結束的條件 2 得有迴圈體 3 有乙個操作可以讓迴圈條件為假 2 while迴圈 當型迴圈 當 滿足時候,然後.格式 while 表示式 計算機首...
C語言瘋狂講義 (二)C語言語法基礎
1 關鍵字 c語言編譯器保留的一些特殊功能的單詞 一共有32個 1 兩大類 資料型別相關的關鍵字 20 個,流程控制相關的關鍵字 12 2 xcode中關鍵字以 紫色來顯示 2 識別符號 我們使用者自己定義的一些字母的組合,可以實現我特定的功能 1 識別符號用作 變數名函式名陣列名 2 識別符號的組...