C語言瘋狂講義 (七)C語言進製轉換

2021-09-07 10:55:10 字數 1853 閱讀 6856

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 識別符號的組...