第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小时内删除。