【2022官方C語(yǔ)言】9小時(shí)快速學(xué)會(huì)C語(yǔ)言!動(dòng)畫(huà)講解C語(yǔ)言視頻教程 c語(yǔ)言零基礎(chǔ)

位運(yùn)算
運(yùn)算符
含義
優(yōu)先級(jí)別
~
按位取反
1(高)
<<
左移
2
>>
右移
3
&
按位與
4
^
按位異或
5
|
按位或
6(低)
??位運(yùn)算符的運(yùn)算功能
一、“按位取反”運(yùn)算~
a:10001101?????????????b=~a;??????b:01110010
二、“左移”運(yùn)算
a:00000110?????????????b=a<<2;????b:00011000
三、“右移”運(yùn)算
a:00000110?????????????b=a>>2;????b:00000110
四、“按位與”運(yùn)算
a:00000110??b:00111110
則a&b的結(jié)果為:
???00000110
&?00111110
???00000110
五、“按位異或”運(yùn)算
00110011
^??11000011
???11110000
六、“按位或”運(yùn)算
???01010011
|??00001100
???01011111
??位數(shù)不同的運(yùn)算數(shù)之間的運(yùn)算規(guī)則
位運(yùn)算的對(duì)象可以是整型和字符型數(shù)據(jù)。當(dāng)兩個(gè)運(yùn)算數(shù)類(lèi)型不同時(shí)位數(shù)亦會(huì)不同。遇到這種情況,系統(tǒng)將自動(dòng)進(jìn)行如下處理:
1、先將兩個(gè)運(yùn)算數(shù)右端對(duì)齊
2、再將位數(shù)短的一個(gè)運(yùn)算數(shù)往高位擴(kuò)充:無(wú)符號(hào)數(shù)和正整數(shù)左側(cè)用0補(bǔ)全,負(fù)數(shù)左側(cè)用1補(bǔ)全,然后對(duì)位數(shù)相等的這兩個(gè)運(yùn)算數(shù)按位進(jìn)行位運(yùn)算。
??練習(xí):
一、選擇題
1、有以下程序:
#include<stdio.h>
void main(){
???char x=040;
???printf(“%d\n”,x=x<<1);
}
程序運(yùn)行后的輸出結(jié)果是( ?)
A.100???????B.160????????C.120??????????D.64
2、設(shè)有定義語(yǔ)句:
char a=3,b=6,c;
則執(zhí)行復(fù)制語(yǔ)句c=a^b<<2;后變量c中的二進(jìn)制值是( ?)
A.00011011?????B.00010100?????C.00011100????D.00011000
3、有以下程序:
#include<stdio.h>
void main(){
???short int x=35;?char z=’A’;
???printf(“%d\n”,(x&15)&&(z<’a’));
}
程序運(yùn)行后的輸出結(jié)果是( ?)
A.0?????????B.1??????????C.2?????????D.3
4、有以下程序:
#include<stdio.h>
void main(){
???short int a=5,b=6,c=7,d=8,m=2,n=2;
???printf(“%d\n”,(m=a>b)&(m=c>d));
}
程序運(yùn)行后的輸出結(jié)果是( ?)
A.0?????????B.1?????????C.2???????????D.3
二、填空題
1、設(shè)變量a的二進(jìn)制數(shù)是00101101,若想通過(guò)運(yùn)算a^b使a的高四位取反,低四位不變,則b的二進(jìn)制數(shù)應(yīng)是 ????????。
2、a為任意整數(shù)。能將變量a清零的表達(dá)式是 ?????????。
3、a為八進(jìn)制數(shù)07101。能將變量a中的各二進(jìn)制位均置成1的表達(dá)式是 ?????????????。
4、能將兩字節(jié)變量x的高八位全置1,低八位字節(jié)保持不變的表達(dá)式是 ??????????。
5、運(yùn)用位運(yùn)算,能將八進(jìn)制數(shù)012500除以4,然后賦給變量a的表達(dá)式是 ?????????。
6、運(yùn)用位運(yùn)算,能將字符型變量ch中的大寫(xiě)字母轉(zhuǎn)換成小寫(xiě)字母的表達(dá)式是 ????