#K3018. C3.18 位运算

C3.18 位运算

一、选择题。

  1. 位运算是什么?

    {{ select(1) }}

  • 对整数进行二进制位上的运算
  • 对浮点数进行二进制位上的运算
  • 对字符串进行二进制位上的运算
  • 对数组进行二进制位上的运算
  1. 以下哪个运算符用于位运算中的按位与操作?

{{ select(2) }}

  • &
  • |
  • ^
  • ~

3.在C语言中,对两个整数进行按位或运算,可以使用哪个运算符?

{{ select(3) }}

  • &&
  • ||
  • |
  • !
  1. 按位异或运算的特点是什么?

    {{ select(4) }}

  • 相同位得0,不同位得1
  • 相同位得1,不同位得0
  • 所有位都得1
  • 所有位都得0
  1. 设有变量a和b,执行a = a & b;后,a的值会如何变化?( )

    {{ select(5) }}

  • a的值保持不变
  • a的值变为a和b的按位与结果
  • a的值变为b的值
  • 无法确定
  1. 设有变量a和b,执行a = a | b;后,a的值会如何变化?( )

{{ select(6) }}

  • a的值保持不变
  • a的值变为a和b的按位或结果
  • a的值变为b的值
  • 无法确定
  1. 按位取反运算的特点是什么?( )

    {{ select(7) }}

  • 将所有位取反
  • 将最高位取反
  • 将最低位取反
  • 将特定位取反
  1. 在位运算中,左移操作符是什么?( )

    {{ select(8) }}

  • <<
  • >>
  • >>>
  • <
  1. 右移操作符的作用是什么?( )

    {{ select(9) }}

  • 将二进制数的所有位向左移动指定位数
  • 将二进制数的所有位向右移动指定位数
  • 将二进制数的特定位向左移动
  • 将二进制数的特定位向右移动
  1. 下列哪个表达式可以将变量a的低四位全部置为1,其余位保持不变?( )

    {{ select(10) }}

  • a = a | 0x0F
  • a = a & 0x0F
  • a = a ^ 0x0F
  • a = a << 4

二、程序阅读。

#include <iostream>
using namespace std; 
int main()
{
    unsigned short x, y;
    cin >> x >> y;
    x = (x | x << 2)& 0x33;
    x = (x | x << 1)& 0x55;
    y = (y | y << 2)& 0x33;
    y = (y | y << 1)& 0x55;
    unsigned short z = x | y << 1;
    cout << z << endl;
    return 0;
}

假设输入的 x和y 均是不超过 15 的自然数,完成下面的判断题和单选题:

判断题

  1. 删去第 7 行与第 13 行的 unsigned,程序行为不变? {{ select(11) }}
  1. 将第7行与第13行的 short 均改为 char,程序行为不变? {{ select(12) }}
  1. 程序总是输出一个正数0? {{ select(13) }}
  1. 当输入为2 2时,输出为10? {{ select(14) }}

选题题

  1. 若输入2 2时,输出的结果为? {{ select(15) }}
  • 59
  • 12
  • 0
  • 不确定
  1. 若输入13 8时,输出的结果为? {{ select(16) }}
  • 0
  • 209
  • 197
  • 226