第十一章 位运算
1.语句:printf("%d \n",12 &012);的输出结果是
A)12 B)8 C)6 D)012
2.设 int b=2;表达式(b>>2)/(b>>1)的值是
A)0 B)2 C)4 D)8
3.执行下面的程序段
int x=35 ,b ;
char z='A' ;
b=((x&15)&&(z<'a')) ;
后 ,b的值为
A)0 B)1 C)2 D)3
4.设二进制数a是00101101,若想通过异或运算a^b使a的高4位取反,低4 位不变,则二进制数b应是【 】。
5.下面程序的输出是
A)100 B)160 C)120 D)64
main()
{ char x=040;
printf("%d\n",x=x<<1);}
6.设有如下定义:int x=l,y=-1;,则语句:printf("%d\n",(x--& y));的输出结果是
A)1 B)0 C)-1 D)2
7.在位运算中,操作数每右移一位,其结果相当于
A)操作数乘以2 B)操作数除以2
C)操作数除以4 D)操作数乘以4
8.在位运算中,操作数每左移一位,其结果相当于
A)操作数乘以2 B)操作数除以2
C)操作数除以4 D)操作数乘以4
9.设位段的空间分配由右到左,则以下程序的运行结果是
struct bit
{ unsigned a:2 ;
unsigned b:3 ;
unsigned c:4 ;
int i ;
} date ;
main()
{ date.a=8;date.b=2;
printf("%d\n",date.a date.b);}
A)语法错误 B)2 C)5 D)10
10.设位段的空间分配由右到左,则以下程序的运行结果是【 】 。
struct bit
{ unsigned a:2 ;
unsigned b:3 ;
unsigned c:4 ;
int i ;
} date ;
main()
{ date.a=1;date.b=2;date.c=3;i=0;
printf("%d\n",date);}
11. 以下程序的输出结果是
main()
{ char x=040;
printf("%0\n",x<<1);
}
A) 100 B) 80 C) 64 D) 32
12. 有以下程序
main()
{ unsigned char a,b,c;
a=0x3; b=a|0x8; c=b<<1;
printf(“%d%d\n”,b,c);
}
程序运行后的输出结果是
A) –11 12 B) –6 –13 C) 12 24 D) 11 22