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

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

2.若有运算符sizeof,<<,^&=, 则它们按优先级由高到低的正确排列次序是(B
,&=,<<,^ ,<<,^,&= C.^,<<,sizeof,&= D,<<,^,&=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,%o运算符优先级按从高到低排列\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^y; y=y^x; x=x^y;
=1,b=2 =2,y=2 =2,y=1 ==1

12.表达式0x13^0x17的值是( A
 

13.请读程序片段,输出结果是:( C
   
int x=20; printf((“%d\n”,~x);

14.表达式~0x13的值是0xffffffec选项中无答案
 

15.在们运算中,操作数每右移一位,其结果相当于B
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^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&040?1:0 )(设最右位是第一位)。 
或a&0x20?1: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^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│=x; printf(“y2=%o\n”,y);}

30.以下程序的运行结果是(59注:笔试题,要细心
main()
{char a=0x95,b,c;
b=(a&0xf)<<4; c=(a&0xf0)>>4; a=b│c; printf(“%x\n”,a);}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。