#P8164. 【CSP第一轮】day1 3.位运算(ok)

【CSP第一轮】day1 3.位运算(ok)


01 #include < iostream >
02
03 using namespace std;
04
05 int main()
06 {
07     unsigned short x, y;
08     cin >> x >> y;
09     x = (x | x << 2) & 0x33;
10     x = (x | x << 1) & 0x55;
11     y = (y | y << 2) & 0x33;
12     y = (y | y << 1) & 0x55;
13     unsigned short z = x | y << 1;
14     cout << z << endl;
15     return 0;
16 }

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

  1. [2 分]删去第 7 行与第 13 行的 unsigned,程序行为不变。( {{ select(1) }} )
  • 正确
  • 错误
  1. [2 分]将第 7 行与第 13 行的 short 均改为 char,程序行为不变。( {{ select(2) }} )
  • 正确
  • 错误
  1. [2 分]程序总是输出一个整数"0"。( {{ select(3) }} )
  • 正确
  • 错误
  1. [2 分]当输入为"2 2"时,输出为"10"。( {{ select(4) }} )
  • 正确
  • 错误
  1. [2 分]当输入为"2 2"时,输出为"59"。( {{ select(5) }} )
  • 正确
  • 错误
  1. [2 分]当输入为"13 8"时,输出为( {{ select(6) }} )。
  • "0"
  • "209"
  • "197"
  • "226"
  1. [2 分]一个字长为8位的整数的补码是11111001,则它的原码是( {{ select(7) }} ).
  • 00000111
  • 01111001
  • 11111001
  • 10000111
  1. [2 分]为了统计一个非负整数的二进制形式中 1 的个数,代码如下:
int CountBit(int x)
{
	int ret = 0;
	while (x)
	{
		ret++;
		___________;
	}
	return ret;
}

则空格内要填入的语句是( {{ select(8) }} )。

  • x >>= 1
  • x &= x - 1
  • x |= x >> 1
  • x <<= 1
  1. [2 分]二进制数11 1011 1001 0111和01 0110 1110 1011进行按位与运算的结果是( {{ select(9) }} )。 (原题为"逻辑与",但是根据题意应当是按位与。)
  • 01 0010 1000 1011
  • 01 0010 1001 0011
  • 01 0010 1000 0001
  • 01 0010 1000 0011