第11章 位运算
11.1 选择题
11.1 以下运算符中优先级最低的是【1】,优先级最高的是【2】。
A) && B) & C)|| D) |
11.2 若有运算符<<, sizeof ,^, &=,则它们按优先级由高至低的正确排列次序是____。
A) sizeof, &=, <<, ^ B) sizeof, <<, ^ , &=
C) ^, <<, sizeof, &= D) <<, ^, &=, sizeof
11.3 在C语言中,要求运行数必须是整型的运算符是____。
A) ^ B) % C) ! D) >
11.4 在C语言中,要求运行数必须是整型或字符型的运算符是____。
A) && B) & C) ! D) ||
11.5 sizeof(float)是____。
A) 一种函数调用 B) 一个不合法的表示形式
C) 一个整型表达式 D) 一个浮点表达式
11.6 表达式a<b || ~c&d的运算顺序是_____。
A) ~, &, <, || B) ~, ||, &, <
C) ~, &, ||, < D) ~, <, &, ||
11.7 以下叙述不正确的是_____。
A) 表达式a&=b等价于a=a&b B) 表达式a|=b等价于a=a|b
C) 表达式a!=b等价于a=a!b D) 表达式a^b等价于a=a^b
11.8 表达式0x13&0x17的值是_____。
A) 0x17 B) 0x13 C) 0xf8 D) 0xec
11.9 请读程序片段:
char x=56;
x=x&056;
printf(“%d,%o\n”, x, x);
以下程序片段的输出结果是_____。
A) 56, 70 B) 0, 0 C) 40, 50 D) 62, 76
11.10 若x=2,y=3则x&y的结果是_____。
A) 0 B) 2 C) 3 D) 5
11.11 在执行以下C语句后,B的值是_____。
char Z=’A’;
int B;
B=((241&15)&&(‘Z’|’a’));
A) 0 B) 1 C) TRUE D) FALSE
11.12 表达式0x13|0x17的值是_____。
A) 0x12 B) 0x17 C) 0xE8 D) 0xc8
11.13 若a=1, b=2,,则a|b的值是_____。
A) 0 B) 1 C) 2 D) 3
11.14 若有以下程序段:
int x=1, y=2;
x=x^y;
y=y^x;
x=x^y;
则执行以上语句x和y的值分别是_____。
A) x=1, y=2 B) x=2, y=2 C) x=2, y=1 D) x=1, y=1
11.15 请读程序片段:
unsigned t=129;
t=t^00;
printf(“%d, %o=\n”, t, t);
以上程序片段的输出结果是_____。
A) 0, 0 B) 129, 201 C) 126, 176 D) 101, 145
11.16 表达式0x13^0x17的值是_____。
A) 0x14 B) 0x13 C) 0x E8 D) 0x17
11.17 请读程序片段:
int x=20;
printf(“%d\n”, ~x);
上面程序片段的输出结果是_____。
A) 02 B) –20 C) –21 D) –11
11.18 表达式~0x13的值是_____。
A) 0xFFEC B) 0xFF71 C) 0xFF68 D) 0xFF17
11.19 在位运算中,操作数每右移一位,其结果相当于_____。
A) 操作数乘以2 B) 操作数除以2 C) 操作数除以4 D) 操作数乘以4
11.20 在位运算中,操作数左移一位,其结果相当于_____。
A) 操作数乘以2 B) 操作数除以2 C) 操作数除以4 D) 操作数乘以4
11.21 设有以下语句:
char x=3, y=6, z;
z=x^y<<2;
则z的二进制是_____。
A) 00010100 B) 00011011 C) 00011100 D) 00011000
11.22 请读程序:
struct bit
{
unsigned a_bit: 2;
unsigned b_bit: 2;
unsigned c_bit: 1;
unsigned d_bit: 1;
unsigned e_bit: 2;
unsigned word: 8;
};
main( )
{
struct bit *p;
unsigned int modeword;
printf(“Enter the mode word (HEX):”);
scanf(“%x”,&modeword);
p=(struct bit *)*modeword);
printf(“\n”);
printf(“a_bit: %d\n”,p->a_bit);
printf(“b_bit: %d\n”,p->b_bit);
printf(“c_bit: %d\n”,p->c_bit);
printf(“d_bit: %d\n”,p->d_bit);
printf(“e_bit: %d\n”,p->e_bit);
}
若运行时从键盘输入:96<回车>
则以下程序的运行结果是_____。
A) | a_bit: 1 b_bit: 2 c_bit: 0 d_bit: 1 e_bit: 2 | B) | a_bit: 2 b_bit: 1 c_bit: 0 运算符优先级按从高到低排列d_bit: 1 e_bit: 2 | C) | a_bit: 2 b_bit: 1 c_bit: 1 d_bit: 0 e_bit: 2 | D) | a_bit: 1 b_bit: 2 c_bit: 2 d_bit: 0 e_bit: 1 |
12.23 设有以下说明:
struct packed
{
unsigned one: 1;
unsigned two: 2;
unsigned three: 3;
unsigned four: 4;
}data;
则以下位段数据的引用中得到正确数值的是_____。
A) =4 B) data.two=3 C) data.three=2 D) data.four=1
12.24 设位段空间分配由右到左,则以下程序的运行结果是_____。
struct packed_bit
{
unsigned a: 2;
unsigned b: 3;
unsigned c: 4;
int i;
}data;
main( )
{ data.a=8; data.b=2;
printf(“%d\n”, data.a+data.b);
}
A) 语法错 B) 2 C) 5 D) 10
11.2 填空题
11.25 在C语言中,&运算符作为单目运算符时表示的是【1】,作为双目运算符时表示的是【2】运算。
11.26 与表达式a&=b等价的另一种书写形式是【】。
11.27 与表达式x^=y-2等价的另一种书写形式是【】。
11.28 请读程序片段:
int a=1, b=2;
if(a&b) printf(“* * *\n”);
else printf(“$ $ $\n”);
以上程序片段的输出结果是【】。
11.29 设有char a, b;若要通过a&b运算屏蔽a中的其它位,只保留第2和第8位(右起为第1位),则b的二进制数是【】。
11.30 测试char型变量a第六位是否为1的表达式是【】。(设最右位是第一位)。
11.31 设二进制数x的值是11001101,若想通过x&y运算使x中的低4位不变,高4位清零,则y的二进制数是【】。
11.32 请读程序片段:
int a=-1;
a=a|037;
printf(“%d, %o)\n”,a, a);
以上程序片段的输出结果是______。
11.33 设x是一个整数(16bit),若要通过x|y使低8位置1,高8位不变,则y的八进制数是【】。
11.34 设x=10100011,若要通过x^y使x的高4位取反,低4位不变,则y的二进制数是【】。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论