




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
操作符
(參考初學(xué)c語(yǔ)言學(xué)習(xí)筆記第23、32條)
一■分類(lèi)
算數(shù)操作符:%
移位操作符:<<,>>
位操作符:&,人"
賦值操作符:=,+二,.=二二,/二,&二,八="二,>>=,<<=,%=
單目操作符:!,?,+,&,sizeof,~類(lèi)型)
關(guān)系操作符:>,>=,<,<=,!=(用于測(cè)試"不相等"),==(用于測(cè)試"相等")
邏輯操作符:&&,||
條件操作符:expl?exp2:exp3
逗號(hào)表達(dá)式:,
下標(biāo)引用:[]
函數(shù)調(diào)用:()
結(jié)構(gòu)成員:.,
二.類(lèi)型詳解
(-)算數(shù)操作符:%
a)對(duì)于A%B(A,B必須為整數(shù)),可利用"%"(取模),獲取小于B的所有整
數(shù)(O~(B-1));
例1:可用A%10,獲取A的個(gè)位數(shù)(113%10=3);
%100,獲取十位和個(gè)位數(shù)(113%100=13);
b)對(duì)于A/B,使用7"時(shí),AB同時(shí)為整型,則商為整型;AB凡一方為浮點(diǎn)
型,則商為浮點(diǎn)型;
(二)移位操作符:<<,>>
a)含義:移動(dòng)的是二進(jìn)制位(在補(bǔ)碼上操作)
b)操作對(duì)象:整型
c)移動(dòng)的大?。赫麛?shù)位
d)補(bǔ)充知識(shí):二進(jìn)制相關(guān)概念(參考初識(shí)c語(yǔ)言學(xué)習(xí)第28,29條)
整數(shù)的二進(jìn)制表示有三種:原碼,反碼,補(bǔ)碼。其中,正整數(shù)三者相同,負(fù)整數(shù)需要
分別計(jì)算。(整數(shù)在內(nèi)存中存儲(chǔ)的是補(bǔ)碼)
例2:十進(jìn)制:7
二進(jìn)制:111
原碼:00000000000000000000000000000111
(共32位。因?yàn)?為整型,4個(gè)字節(jié),及32個(gè)比特位)
(第一個(gè)數(shù)字可表正負(fù),稱(chēng)為符號(hào)位,0為正,1為負(fù))
反碼:00000000000000000000000000000111
補(bǔ)碼:00000000000000000000000000000111
十進(jìn)制:-7
原碼:10000000000000000000000000000111
反碼:11111111111111111111111111111000
(原碼符號(hào)位不變,其他位置咬位取反)
補(bǔ)碼:11111111111111111111111111111001(反碼+1)
e)左移操作符的效果:原數(shù)*2。即:7—>14,-7—>-14
f)右移操作符:(也即:原數(shù)/2)
算數(shù)移位(右邊丟棄,左邊補(bǔ)原符號(hào)位)(VS編輯器采用算數(shù)移位)
邏輯移位(右邊丟棄,左邊補(bǔ)零)(通常不用)
g)左移操作符的理解:
對(duì)于正整數(shù):7,原碼、反碼、補(bǔ)碼三碼相同。
移動(dòng)的是補(bǔ)碼,即補(bǔ)碼所有數(shù)字左移一位,
并補(bǔ)0。此時(shí),二進(jìn)制的計(jì)算如右圖所示??梢?/p>
理解為:首非零位所帶來(lái)的增值,能做到:彌補(bǔ)
尾值消失所帶來(lái)的減小,且剩余量恰好等于原值。
也即:原數(shù)*2。
對(duì)于負(fù)整數(shù):-7,三碼表示如例2所示。補(bǔ)碼左移一位,且補(bǔ)零后,-1得反
碼,反碼再轉(zhuǎn)換為原碼。轉(zhuǎn)化結(jié)束后,且結(jié)果(除符號(hào)位外的其余位與正數(shù)
7相同)與正數(shù)相似。
h)在C語(yǔ)言中的基本使用:(移位運(yùn)算時(shí)最有效的計(jì)算乘除法的運(yùn)算之一)
廚MicrosoftVisi
BintmainO
-7-14
inta=-7;D:\VS2022所居
intb=a?1;按任意鍵關(guān)閉
printf(%d%d,a,b);
■!return0;
(三)位操作符:&,人/(雙目操作符)
a)含義:①&(按位與)/(按位或),八(按位異或)
②三者操作的皆是二進(jìn)制位
③三者所得皆為補(bǔ)碼
b)區(qū)別:①&:比較補(bǔ)碼,每位數(shù)字,含零則零,全一則一
②|:比較補(bǔ)碼,每位數(shù)字,含一則一,全零則零
③八:比較補(bǔ)碼,每位數(shù)字,相同為零,相異為一
c)計(jì)算規(guī)則:
A
:①滿(mǎn)足交換律,②相同數(shù)異或得0:aAa=0,③任何數(shù)與0異或得自
身:aA0=a
d)使用示例:
例3(人):在不創(chuàng)建臨時(shí)變量的情況下,通過(guò)"八"交換兩變量的值,如圖:(在
實(shí)際編寫(xiě)代碼時(shí),此方法偏向于雞肋)
①“a二a八b”的作用在于,輔助后兩語(yǔ)句完成功能的實(shí)現(xiàn);(并非在實(shí)際上計(jì)算
出“a八b”的值,僅是在邏輯上應(yīng)用到“八”的特性)
②ub=aAbn實(shí)際上此時(shí)為:"b=aAbAb",此時(shí),ubAb"=0,即:b二a八。,
也即b=a=5;
③ua=bAa"實(shí)際上此時(shí)為:a=aAaAb",也即a=b二2;
HintmainO
〃在不創(chuàng)建臨時(shí)變量的情況下,通過(guò)“一”交換兩變量的值
inta=5;
intb=2;
printf("操作前:a=%db=%d\n”,a,b);
a=ab;
b=ab;
a=ba;
-printf("操作后:a=%db=%d”[a,b)J_______________________
1
1return0;
11
例4(&):輸出一個(gè)整數(shù)在計(jì)算機(jī)中存儲(chǔ)時(shí)含有多少個(gè)1,如圖:
(也即:求一個(gè)整數(shù)存儲(chǔ)在內(nèi)存中的二進(jìn)制中1的個(gè)數(shù))
//輸出?個(gè)數(shù)在計(jì)算機(jī)中存儲(chǔ)時(shí)含有多少個(gè)1
〃(求一個(gè)整數(shù)存儲(chǔ)在內(nèi)存中的二斑制中1的個(gè)數(shù))
My_Count(intnum)
intcount=0;〃用于計(jì)數(shù)
while(num)//當(dāng)num=0時(shí),不立入循環(huán)。
(
if(num&1)〃判斷.“num&1".是否為真
;//num&1,可理解為,num在計(jì)算器中以二進(jìn)制存儲(chǔ),使其進(jìn)行?“按位與1”計(jì)算
//4:比較兩變量的補(bǔ)碼,含零則零,全一則一
〃1在二進(jìn)制中為:0(共31個(gè)零)1,其與num比較時(shí),很容易知道,當(dāng)且僅當(dāng)num的補(bǔ)碼最后一位為1時(shí)
//“num&1”的結(jié)果才為1?否則為零
〃籍此作為選擇語(yǔ)句的判斷條件,故當(dāng)進(jìn)入選擇語(yǔ)句時(shí)可知,num此次循環(huán)的最后?位為1
(
count++;〃計(jì)數(shù)+1
)
num=num?l;〃num右移1位,用來(lái)實(shí)現(xiàn);每次循環(huán)可以統(tǒng)計(jì)二進(jìn)制中的?位數(shù)字是否為1
〃此語(yǔ)句不得放入選擇語(yǔ)句中,理由:若num=10?此時(shí)二進(jìn)制位表現(xiàn)為:0(共28個(gè)零)1010
〃則num&1=0,此時(shí)不進(jìn)入選擇語(yǔ)句,若此語(yǔ)句在if內(nèi),則num—宜不被改變,循環(huán)無(wú)解
)
returncount:
main()
intnum=0;
printf("詁輸入任意整數(shù):”):
scanf(*%(!*,&num);
intret=My_Count(num):
printf("底漱在計(jì)算機(jī)存儲(chǔ)內(nèi)含有:刎個(gè)1",ret);
return0;
e)理解:
①"按位"可理解為:操作對(duì)象的補(bǔ)碼,其位序滿(mǎn)足對(duì)應(yīng)關(guān)系
②"與二"或"可理解為:是對(duì)數(shù)字1的描述。即“a&b"表:a和b的補(bǔ)
碼,對(duì)應(yīng)位都是1,則結(jié)果的對(duì)應(yīng)位為1;匕|b”表:對(duì)應(yīng)位有一個(gè)是
1,則為1
③"異或"可理解為:"按位異或"操作通常用于滿(mǎn)足"使特定為翻轉(zhuǎn)"(參
考例5)和“兩值交換"(參考例3)
(四)單目操作符:!,-,+,&,sizeof,~類(lèi)型)
a)含義:①!:邏輯反操作;即:反轉(zhuǎn)真假,a為真(非零),!a為假(零)
②?:負(fù)值
③+:正值
④&:取地址
⑤sizeof:計(jì)算操作數(shù)的類(lèi)型長(zhǎng)度(單位:字節(jié)),即:某類(lèi)型所創(chuàng)
建的變量占據(jù)空間的大小
⑥~:對(duì)一個(gè)數(shù)的二進(jìn)制按位取反
⑦一:-1,有前置(先減再用\后置之分
⑧++:+1,有前置、后置(先用再加)之分
⑨*:間接訪問(wèn)操作符(解引用操作符)
⑩(類(lèi)型):強(qiáng)制類(lèi)型轉(zhuǎn)換
b)的作用:
①對(duì)于操作數(shù)的二進(jìn)制位,即其反碼,進(jìn)行按位取反;
②在數(shù)學(xué)上,等效于:取原數(shù)的相反數(shù)并-1;
③通過(guò)和"&"、T,也可達(dá)到修改特定位的目的:
例5:修改特定位的幾種操作方法
臼
一mainO
t
n
-inta=13;〃僅修改a的第〃位數(shù)。a的二進(jìn)制反碼為:01共27個(gè))01101,
:〃反碼為32位,為方便采用8位顯示,即:00001101
〃。變1
a1=(1?4);〃知:2的其他位不變,匚修改為1;“I”(按位或)“含1則1”;
;〃故當(dāng)a按位或第五位為1.其他位為0的數(shù).即可達(dá)到目的
〃也舁:a|=00010000
〃利用1的反碼為:00000001的特性,將第一位1左移至第五位,也即左移4位
printf(*%d\n*,a);
〃1變0
a&=C(1?4));〃此時(shí):a的反碼為:00011101
:〃“&”(按位與)“全1則1”;
〃當(dāng)a按位與第一到四號(hào)位為1.第五位為0.其他位為1的數(shù),即達(dá)到目的
〃也即:a&=11101111
//)311101111可由00010000按位取反得,00010000可由1左移四位得
printf(*%d\n*,a);
〃利用,完成上述操作
intb=13;
b"=(1?4);//“一”(按位異或)“相異為1”:
printfC%d\n*,b);丸原數(shù)按位異或特定位與原數(shù)不同且其他位為0的數(shù),即可
b"=(1?4);
printf(*%d\n*,b);
return0;
)
c)的注意事項(xiàng)
①通常情況下,嚴(yán)格按照:"前置先變?cè)儆茫笾孟扔迷僮?理解即可
②無(wú)論前置后置,操作數(shù)本身都發(fā)生了變化,變化幅度為1
③在內(nèi)置循環(huán)類(lèi)型中,"i++"與"++『沒(méi)有區(qū)別,見(jiàn)下圖
(兩個(gè)循環(huán),i、j均由0開(kāi)始,到10結(jié)束,共經(jīng)歷10次循環(huán))
ElintmainO
inti=0;
intj=0;
intcount1=0;
intcount2=0;
國(guó)MicrosoftVisualSt
for(i=0;i<10;i++)
1010
count1++;
)1010
日f(shuō)or(j=0;j<10;++j)
D:\VS2022所寫(xiě)代
count2++;按任意鍵關(guān)閉此趨
)
printf(*%d%d\n*?count1,i);
printf(*%d%d\n*?count2,j);
return0;
}
d)&&與||的注意事項(xiàng)
①在多重"邏輯與"的情況下:從左往右,遇0(假)即止,其后的語(yǔ)項(xiàng)將
不再執(zhí)行。如圖:
Sintmain()
國(guó)MicrosoftVisua
(
1
inti=0,a=0,b=2,c=3;a一
一2
i=a++&&++b&&c++;b=
printf(*a=%d\nb=%d\nc=%d\ni=%d*?a,b,c,i);c3
return0:i0
②在多重"邏輯或"的情況下:從左往右,遇1(真)即止,其后的語(yǔ)項(xiàng)將
不再執(zhí)行。如圖:
Elintmain()國(guó)MicrosoftVi
I(
inti=0,a=0,b=2,c=3;a1
i=a++||++b||C++;b3
printf("a=%d\nb=%d\nc=%d\ni=%d”,a,b,c,i);C3
return0;
1.1
e)下標(biāo)引用操作符:"[]"
①arr[7]成立,意為:訪問(wèn)數(shù)組arr的下標(biāo)為7的元素,也即第八個(gè)元素
②7[arr]成立,與寫(xiě)法①表同種意義(但不常用,且僅在實(shí)現(xiàn)訪問(wèn)功能時(shí)可
行,在定義時(shí)不行)
f)結(jié)構(gòu)體成員:"和
①"."的使用:”結(jié)構(gòu)體對(duì)象.成員名"
②"?>"的使用:”結(jié)構(gòu)體指針變量。成員名"
③例6:兩者在結(jié)構(gòu)體中的使用及其異同點(diǎn)
期北場(chǎng)[知;鬻幻鍍微滑自守燧建設(shè)葡冬彳堵在的如通
A東例:
他建弘峋血料祭例$虬
加ct加.>7
I>.ir\丫內(nèi)仍叁辦總鉆狗林飴灰堂.
char加版[頊n而發(fā))r海*)秤中油比同
int.
dar冽口
cbrieloLgj''.
]0../.―-4.@-
何&p%/d:(s譏視:S如*ps),
1尸金,
?pG甘「%曲U%5%豬\「,(妙及將岫爭(zhēng)),解「附
.;宓6?,七pO.?te化)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 軋制加熱工崗前進(jìn)度管理考核試卷含答案
- 四年級(jí)數(shù)學(xué)(上)計(jì)算題專(zhuān)項(xiàng)練習(xí)及答案匯編
- 汽車(chē)模型工保密意識(shí)能力考核試卷含答案
- 澳洲開(kāi)鎖專(zhuān)業(yè)知識(shí)培訓(xùn)課件
- 救護(hù)員考試題目及答案
- 靜設(shè)備考試題及答案
- 警務(wù)人員考試題及答案
- 滾動(dòng)屏幕課件
- 《金屬材料及熱處理(第二版)》課件-第七章 鑄鐵
- 月餅廣告語(yǔ)范文
- 重大危險(xiǎn)源(主要負(fù)責(zé)人、技術(shù)負(fù)責(zé)人、操作負(fù)責(zé)人)履職內(nèi)容及考核評(píng)估表
- 江蘇省鎮(zhèn)江丹陽(yáng)市華南實(shí)驗(yàn)學(xué)校2023-2024學(xué)年九年級(jí)上學(xué)期第一次月考數(shù)學(xué)試題(無(wú)答案)
- 制氮機(jī)設(shè)備設(shè)施風(fēng)險(xiǎn)點(diǎn)日常檢查表
- 數(shù)學(xué)教育概論張奠宙-宋乃慶課件
- 植物的組織和器官
- GB/T 20882.2-2021淀粉糖質(zhì)量要求第2部分:葡萄糖漿(粉)
- 總賬會(huì)計(jì)績(jī)效考核表
- 人工智能8神經(jīng)網(wǎng)絡(luò)課件
- 維利克面試問(wèn)題匯總
- 小區(qū)監(jiān)控系統(tǒng)改造方案
- 高中生物競(jìng)賽課件植物器官的結(jié)構(gòu)與生長(zhǎng)發(fā)育
評(píng)論
0/150
提交評(píng)論