正文 第48章 位運算3(2 / 2)

bit.x=1;

bit.y=9;

bit.z=6;/*分別給三個位域賦值*/

printf("bit.x=%d,bit.y=%d,bit.z=%d\n",bit.x,bit.y,bit.z);

/*以整型格式輸出三個位域的內容*/

pbit=&s5;/*位域變量bit的地址賦給指針變量pbit*/

pbit->x=0;

pbit->y&=10;/*使用了複合的位運算符“&=”,相當於pbit->b=pbit->b&10,結果為8*/

pbit->z|=3;

/*使用了複合位運算符“|=”,相當於pbit->c=pbit->c|3,其結果為7*/

printf("pbit->x=%d,pbit->y=%d,pbit->z=%d\n",pbit->x,pbit->y,pbit->z);

/*用指針方式輸出了這三個域的值*/

運行結果:

bit.x=1bit.y=9bit.z=6

pbit->x=0pbit->y=8pbit->z=7

習題十二

1.運算符&&、&、||、|中,優先級最低的是,優先級最高的是。

2.若a=6、b=8,則a&b的值是。

3.若x=10,y=56,則x|y的結果是。

4.表達式0x15|0x27的值是。

5.若有以下程序段,則執行以下語句後x、y的值分別是。

main()

{intx=5,y=6;

x=x^y;

y=y^x;

x=x^y;

printf("%d,%d",x,y)

6.設有“chara,b;”,現要屏蔽a中的某些位,通過a與b進行&運算,隻保留第3位和第5位(右起為第1位),則b的二進製數是。

7.以下程序的運行結果是。

main()

{charx=23;

x=x&023;

printf("%d,%o\n",x,x);

8.設二進製數x的值是11000011。若想通過&運算使x中的高4位不變,低4位清零,則y的二進製數是。

9.以下程序的運行結果是。

main()

{chara=0x28,b,c;

b=(a&0x7)2;

c=(a&0x60)3;

c=a&c;

printf("%x\n",c);

10.以下程序的運行結果是。

main()

{unsigneda=0254,x,y;

intz=10;

x=a(16-z);

printf("x=%o\n",x);

y=az;

printf("y1=%o\n",y);

y|=x;

printf("y2=%o\n",y);