運算子介紹
- 運算子介紹
- (1)移位運算子
- (2)位運算子
- &的用法:
- ^的用法:
- |的用法:
- (3)賦值運算子
- (4)單目運算子
- 邏輯反運算子:!
- 對一個數的二進制按位取反:~
- 前置后置++,--
- (5)條件運算子
- (6)逗號運算式
- 總結
運算子介紹
(1)移位運算子

該種運算子,是在某個變數的二進制位上左移/右移n位例如:
00000000000000000000000000001011 該二進制表示十進制數字11
如果利用左移1位那么二進制表示結果變為
00000000000000000000000000010110(左邊0去掉右邊補一個0)
此時,代碼表示結果為22,我們在這里利用C語言驗證一下:

很明顯,答案正確,
(2)位運算子
在這里我們介紹三種位運算子:1.& 2.^ 3.|
&的用法:
&表示二進制與,什么是二進制與呢?這里的與,其實和邏輯與是一個意思,二進制與就是在兩個二進制表示之中每一個位分別與,我們還是用上述的11和22來舉例說明一下:
00000000000000000000000000001011為11
00000000000000000000000000010110為22
那么進行二進制與后得到:
00000000000000000000000000000010,為2,我們還是利用代碼驗證一下,
其實二進制異或(^)和二進制或(|)也是一樣的道理,我們都用11和22來舉例,
^的用法:
00000000000000000000000000001011為11
00000000000000000000000000010110為22
進行二進制異或后得到:
00000000000000000000000000011101,為29,代碼實作:
|的用法:
00000000000000000000000000001011為11
00000000000000000000000000010110為22
進行二進制或后得到:
00000000000000000000000000011111,為31,代碼實作:
(3)賦值運算子

事實上,這些賦值運算子,都是在=基礎上簡化了某些賦值方法
在=后邊的所有運算子其實意義都一樣,我們在這里拿+=舉例:
如果要將a+1的值賦給a,那么我們的操作有兩種:
1.a=a+1 2.a+=1,也就是說兩式意思完全相同,之后的所有賦值運算子也是這個意思,
(4)單目運算子
只要我們仔細觀察,不難發現,上邊的所有運算子,運算元都有兩個,例如移位運算子,a向左移一位,那么對應的兩個運算元就是a和1,那么這種具有兩個運算元的運算子,我們稱其為雙目運算子,接下來我們要介紹的這幾種是只有一個運算元的運算子,
邏輯反運算子:!
在C語言中,非零表示真,零表示假,也就是說比方我們賦值一個非零數給了某個變數,該變數為真,如果對它進行邏輯反操作那么得到的就是零,在這里不得不提一句,因為非零的數有很多,那么如果我們對一個假的變數邏輯取反,得到的其實是零,這也就意味著,C語言中默認以1來代表真,
值得一提的是,如果我們想要的條件運算子是不等于,那么需要以!=來表示不等于,
對一個數的二進制按位取反:~
在介紹這個符號之前,我想先講述一下電腦對于二進制數的存盤,
一個數的二進制有三種表達方式:原碼,反碼,補碼,
對于正數而言,它的原碼反碼補碼相同,
而對于負數而言,它的原碼反碼補碼是需要經過計算的,
一個有符號的數,其二進制表示最高位是符號位,符號位為0意為正,為1為負
正數我們拿11來舉例
原碼:00000000000000000000000000001011
反碼:00000000000000000000000000001011
補碼:00000000000000000000000000001011
負數我們拿-11舉例
原碼:10000000000000000000000000001011
反碼:符號位不變,其他位按位取反,則:
反碼:1111111111111111111111111111111110100
補碼:在反碼的二進制序列加一,則:
補碼:1111111111111111111111111111111110101
介紹完原碼反碼補碼的概念后,我想告訴大家的是,電腦記憶體中儲存的其實是數字的二進制補碼,計算時也是利用補碼計算而非其原碼,那么其實~的用法是什么呢,就是對某個數的補碼按位取反,然后輸出這個取反之后的數,但是在輸出時,想要確定這個數,需要通過計算推出該數的原碼,進而推出該數,我們這里利用-11的例子來舉例幫助理解:


前置后置++,–
這種運算子常見在回圈陳述句中,其實就是自增(++)自減(–)
只不過在++/–前置后置上有所不同,如果是前置++/–,這意味著先自增自減,后自增自減,如果是后置++/–則意味著先使用后自增自減,我們利用一段代碼來幫助理解,

在前兩個代碼中,number_1和number_2相等這意味著我們的值是先進行了自增自減后賦值的,后兩個代碼因為先使用,所以number_2保留了number_1 的初始值,之后的number_1才變化,
(5)條件運算子

這種運算子又被成為三目運算子,是唯一一種可以操作三個數字的運算子,他的意思是,exp1成立嗎,如果成立(true)那么exp2,如果不成立(false)那么exp3,是一個很好的簡化代碼的運算子,我們這里利用一段代碼幫助理解,
(6)逗號運算式

利用逗號將每一段運算式隔開,式子的最終結果等于最后一個運算式的值,代碼如下:
逗號運算式中第一步先計算a=a-9使得這時a=-3,第二步計算b=a+4使得b=1,第三步也就是最后一步是c=b-6使得c=-5,那么d的值就是最后一個運算式的值也就是c的值-5,因此列印出d是-5.
總結
以上便是我覺得一些需要特別記憶的運算子的介紹和用法,希望我們一起進步,取得大廠offer!!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/286643.html
標籤:其他
上一篇:入門C語言——初識C語言(2)
下一篇:淺談常見排序
