C語言基礎 (3)進製表示 操作符介紹

2021-08-21 15:48:58 字數 4032 閱讀 5441

二進位制表示其實就是在計算機中真實儲存的資料狀態,乙個位元組分成八段,每段可以用來記錄乙個0 或者1,要想把乙個數字記錄在乙個位元組裡必須首先把這個數字拆分成八個0或者1,採用一組0或者1表示數字的方法叫做二進位制。

任何數字都可以採用十進位制方式表示也可以採用二進位制方式表示,計算機裡只能用二進位制方式記錄數字。

二進位制中每個數字有乙個編號,最右邊數字的編號是0,向左依次遞增;

二進位制表示方式中某個數字上的1單獨代表的數字可以採用2的數字編號次方計算;

二進位制表示方式中如果相鄰兩個數字的內容一樣則左邊數字代表的數字是右邊數字代表數字的2倍;

以上規則只適用於二進位制表示的非負數。

二進位制加一的計算規則是把編號為0位置開始的連續多個1都變成0,把最右邊的0變成1

二進位制表示的非負數轉換成十進位制的時候只需要把每個1單獨轉換然後把轉換結果求和:

0000 0101 = 2的2次方 + 2的0次方

= 4 + 1

= 50010 0100 = 2的5次方 + 2的2次方

= 32 + 4

= 36

非負數表示的十進位制轉換成二進位制的方法

** ***0 12

** **0 6

** *1 3

** 1 1

** 0

轉換結果是0000 1100

不停對數字做除以2保留整數部分的操作得到一組數字,對每個數字做除以2取餘的操作得到乙個數字的內容。把所有數字內容按照從後向前的順序書寫就得到轉換結果。

負數的二進位制和十進位制之間不能直接轉換, 需要借助它們的相反數。

轉換過程分三步,首先計算相反數,然後把這個相反數進行轉換,最後根據轉換結果再計算相反數。

把二進位制中每個數字的內容變成相反數然後再加一就得到相反數的二進位制。

-14

14 0000 1110

1111 0001 + 1 = 1111 0010(-14的二進位制)

有符號型別二進位制最左邊的數字叫做符號位,根據它可以知道數字的正負。符號位是0表示非負數,符號位是1表示負數。

1100 0101

0011 1010 + 1 = 0011 1011

59 -59

把二進位制表示方式中從右向左每三個數字分成一組,每組用乙個0到7之間的數字替換。這個替換結果就叫做數字的八進位制表示方式。

例如:

0110 1010

01 101 010 *****》 152(八進位制)

可以在程式中直接使用八進位制方式表示數字,但是必須以0作為數字開頭。可以採用 %o 作為佔位符把數字的八進位制表示方式顯示到螢幕上。

printf("%d   0%o\n",  0152, 0152);
這段**前面顯示152(八進位制)的十進位制表示(106),後面就是以八進位制表示方法顯示到螢幕上的0152。

把二進位制的所有數字從右向左每四個數字分成一組,每組用乙個字元替換。用 a 到 f 的六個字元替換10到15之間的六個數字。

例如:1100

1011cb

可以在程式中使用十六進製制方式表示數字,這個時候必須用0x作為開頭,可以採用 %x 或者 %x 作為佔位符把數字的十六進製制表示方式顯示到螢幕上。顯示結果裡不包含0x開頭。如果採用 %x 則顯示結果中所有英文本元都是小寫的;而採用 %x 則顯示結果中所有英文本元都是大寫的。

操作符用來表示對數字的計算規則,操作符分成單目操作符,雙目操作符,三目操作符。

加減乘除都是雙目操作符(*代表乘法,/代表除法);參與除法計算的兩個數字如果都是整數則計算結果只保留整數部分;

賦值語句可以當做數字使用,這個數字就是賦值完成後儲存區里的數字,可以在一條語句中使用多個賦值操作符,這個時候應該優先計算右邊的賦值操作符。

絕大多數雙目操作符都可以和賦值操作符復合合併成復合賦值操作符(例如 += , *= )

復合賦值操作符要求左邊是乙個儲存區,右邊是乙個數字,復合賦值操作符首先把左右兩邊的內容用雙目操作符進行計算,然後把計算結果記錄到左邊的儲存區中。復合賦值操作符的優先順序和賦值操作符的優先順序一樣低

自增操作符(++)和自減操作符(–)都是單目操作符。它們都只能和儲存區配合使用,它們可以把儲存區的內容做加一或減一操作。它們各有兩種使用方法,一種是前操作(操作符寫在儲存區前面),另外一種就是後操作(操作符寫在儲存區後面)

例如:

inr  num;

num++;//後操作自加

++num;//自增前操作

num--;//自減後操作

--num;//自減前操作

自增或自減操作符編寫的表示式可以當做數字使用,前操作當數字使用的時候是修改後的數字,後操作當數字使用的時候是修改前的數字。

不要在一條語句裡對同乙個變數多次進行自增或者自減計算,因為這樣做會使結果不確定

邏輯操作符用來編寫邏輯表示式,邏輯表示式的結果只能是布林值。

!是乙個單目邏輯操作符,它可以計算乙個布林值的相反值,(求反),這個操作符使用的時候要寫在乙個布林值的前面。

在邏輯操作符中有很多雙目邏輯操作符,包括 ==(等於), !=(不等於),>(大於),<(小於),>=(大於等於),<=(小於等於)

簡單邏輯表示式中最多隻包含乙個雙目邏輯操作符,簡單邏輯表示式在計算機中和在數學裡的結果一定一樣。

程式中複雜的邏輯表示式必須拆分成多個簡單邏輯表示式然後再合併。

可以使用與(&&)和或(||)這兩個雙目邏輯操作符合併兩個邏輯表示式。

如果兩個邏輯表示式中有乙個結果是真則用或(||)合併後結果就是真;

如果兩個邏輯表示式中有乙個結果是假則用與(&&)合併後結果就是假。

與(&&)和或(||)都具有短路特徵

如果前面邏輯表示式的結果可以決定整個邏輯表示式的結果則計算機會忽略後面的邏輯表示式。

例如:

int num = 0;

1||++num;

printf("num是%d\n", num);

因為1決定了或運算的結果,所以後面的自增操作不會進行,所以這段**的結果輸出還是 num是0 。

位操作符可以直接操作二進位制數字。

~是乙個單目位操作符,它可以把乙個二進位制數字中每個數字求反(按位求反)。這個操作符使用的時候應該寫在乙個數字的前面。

雙目位操作符包括按位與(&),按位或(|)和按位異或(^),它們可以把兩個數字對應的二進位制位上的內容做計算;按位與可以把對應數字上的內容做與計算;按位或可以把對應數字上的內容做或計算。

例如:

3 ——>0000 0011

& 5 ——>0000 0101

結果—>0000 0001

3 ——>0000 0011

| 5 ——>0000 0101

結果—>0000 0111

按位異或可以把對應數字的內容做異或計算,如果對應數字內容一樣則異或結果就是0,如果對應數字內容不一樣則異或結果就是1:

3 ——>0000 0011

^ 5 ——>0000 0101

結果—>0000 0110

移位操作符可以把二進位制數字中每個數字裡的數字統一向左或者向右移動 n 個位置。

《表示向右移位操作符;>>表示向左移位操作符

它們都是雙目位操作符,操作符左邊的數字表示將要進行移位操作符的數字,操作符右邊的數字表示將要移動的位數。移位操作可以把每個數字的內容移動到另乙個數字裡。

在左移的時候右邊空出來的數字上一定填充0;右移的時候左邊空出來的數字上一定填充符號位。

一般情況下吧數字左移動 n 位相當於乘以2的 n 次方;向右移動 n 位相當於除以2的 n 次方。

所有位操作符不會修改儲存區內容,只會計算出乙個新數字

&也可以作為單目操作符使用,它可以用來計算出乙個儲存區的位址,叫做取位址操作。這個操作符使用的時候應該放在乙個儲存區的前面。

可以使用 %p 作為佔位符把位址資料顯示到螢幕上,在我們使用的計算機裡所有位址資料都佔32個二進位制數字。

三目操作符可以從兩套計算規則中選擇一套進行計算,三目操作符的格式如下:

布林值 ? 公式一 : 公式二

如果布林值是真就選擇公式一進行計算,否則選擇公式二進行計算。

使用三目表示式的時候不要在問好後使用賦值操作符

C語言操作符簡單介紹

在c語言中,操作符主要包括算數操作符 移位操作符 位操作符 賦值操作符 單目操作符 關係操作符 邏輯操作符 條件操作符 逗號表示式 下標引用 函式呼叫和結構成員。以下為各操作符簡單介紹 1.算術操作符 例 定義整型變數 a 4,b 2.運算子含義 運算操作 結果加法運算子 a b a和b的和 6 減...

C語言操作符的簡單介紹

算數操作符 移位操作符 位操作符 賦值操作符 單母操作符 關係操作符 邏輯操作符 條件操作符 逗號操作符 下標引用 函式呼叫和結構成員 1.除了 操作符以外,其他的幾個操作符可以作用於整數和浮點數 2.對於 操作符如果兩個運算元都為整數,執行整數除法。而只要有浮點數執行的就是浮點數除法 3.操作符的...

C語言 操作符(簡單介紹)總結

簡單介紹為主,後面會詳細講 算術操作符 對應符號與使用方式 加號 1 2 減號 2 1 乘號 2 3 這裡輸出結果為6 除號 5 2 輸出結果為商 取模 5 2 輸出結果為餘數 include intmain 移位操作符 2進製 用法 右移 include intmain 整型1佔4個位元組 32個...