位运算练习题_参考答案

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

位运算练习题2007-06-12 10:31

1. 以下运算符中优先级最低的是(C)优先级最高的是(B )

A.&&

B.&

C.||

D.|

2. 若有运算符sizeof,<<]&=, 贝陀们按优先级由高到低的正确排列次序是( B )

,& =,<<,A ,<<,A,&= C.A,<<,sizeof,&= D,<<,A,&=sizeof

3. 在C语言中,要求运算数必须是整型或字符型的运算符是(B )

A.&&

B.&

C.!

D.||

(float)是(C)

A. —种函数调用

B. 一个不合法的表示形式

C. 一个整型表达式

D. 一个浮点表达式

5. 表达式0x13&0x17的值是(B)

6. 以下程序的运行结果是(C )

,70 ,0 ,50 ,76

Char x=56; x=x&056; printf( “ %d,% n” ,x,x);

7. 若x=2,y=3 则x&y 的结果是( B )

D,5

8. 在执行完以下C语句后,B的值是(B或C)注:最好选B,C语言中无bool型

charZ='A');

intB;

B=((241&15)&&(Z|'a');

9. 表达式0X13|0x17 的值是(B)

10. 若a=1,b=2; 则a|b 的值是( D)

11. 若有以下程序段,则执行以下语句后x,y 的值是分别是(C)int x=1,y=2; x=x A y; y=y A x; x=x A y;

=1,b=2 =2,y=2 =2,y=1 ==1

12. 表达式0x13A0x17 的值是(A)

13. 请读程序片段,输出结果是:(

int x=20; printf(( “%d n”,~x);

14. 表达式~0x13 的值是 ( 0xffffffec

)选项中无答案

15. 在们运算中,操作数每右移一位,其结果相当于

A.操作数乘以2

B.操作数除以2

C.操作数除以4

D.操作数乘以4

16.在位运算中,操作数每左移一位,其结果相当于( A )

A. 操作数乘以2

B. 操作数除以2

C. 操作数除以4

D. 操作数乘以4

17.设有以下语句。则z 的二进制值是(B)

char x=3,y=6,z;

z=x A y<<2;

18.读程序片段:

int a=1,b=2; if(a&b) printf(“*** n”); else printf(“$$$ n” n);

输出结果是:($$$ )

19. 设有char a,b; 若要通过a&b 运算屏蔽掉a 中的其它位,只保留第2 和第8 位(右起为第1 位)。则 b 的二进制数是(01000001 )

20. 测试char 型变量a 第六位是否为1 的表达式是(a&0401:0 )(设最右位是第一位)。

或a&0x201:0 (表现方法很多,但算法不变)

注意:不可以直接用二进制数,不存在二进制型数,直接写成二进制,计算时是按十进制计算的,结果有误,可以用存在的进制数的任何一种

21. 设二进制数x的值是。若想通过x&y运算使x中的低度4位不变,高4位清零,则y 的二进制数是( 00001111 )

22. 以下程序片段的输出结果是( )-1,777 注意:位运算是机器码间进行运算,结

果还是机器码,若用十进制输出,需翻译为机器码的补码,然后转为十进制数;若输出为8或16 进制,则直接转为8 或16 进制输出即可。

int a=- 1; a=a|0377; printf( “ %d,%o n” ,a,a);

23. 设x是一个整数(16bit).若要通过x|y使x低度8位置1,高8位不变,则y的二进制数是( 00000000 )

24. 设x=.若要通过x^y使权x的高4位取反。低4位不变。则y的二进制数是。()

25. 以下程序片段的输出结果是( mmm)

int m=20,n=025; if(m A n) printf( “mmm n” ); else printf( “nnn n” );

26. 以下程序的运行结果是:()a:9a b:ffffff65

注:最好不要加0x main( )

{unsigned a,b;l

a=0x9a; b=~a;

printf( “ a:%x nb:%x=n” ,a,b);}

27. 以下程序的运行结果是( )1,4,4 注:printf 中是从右边运算,然后左输出;本题

, 依次从从右运算后 a 为4,因此输出为:1,4,4

unsigned a=16; printf( “ %d,%d,%d n” ,a>>2,a=a>>2,a);

28. 以下程序运行的结果是( )x=11,y=17,z=11

main( )

{unsigned a=0112,x,y,z;

x=a>>3; printf( “ x=%o,” ,x);

y=~(~0<<4); printf( “ y=%o,” ,y);

z=x&y; printf( “ z=%o n”,z);}

29. 以下程序的运行结果是()x=1704000 y1=7 y2=1704007

main() {unsigned a=0361,x,y; int n=5;

x=a<<(16- n); printf( “ x=%o n” ,x);

y=a>>n; printf( “y1=%o n” ,y);

y I =x; printf( “y2=%o n”,y);}

30. 以下程序的运行结果是( 59 )注:笔试题,要细心

main()

{char a=0x95,b,c;

b=(a&0xf)<<4; c=(a& OxfO)>>4; a=b I c; printf( “ %x n”,a);}

相关文档
最新文档