#BITOBJ01. 位运算基础选择填空专项练习(20题)

位运算基础选择填空专项练习(20题)

位运算基础选择填空专项练习(20题)

说明

本题共 20 小题,每题 5 分,共 100 分。

  • 第 1~12 题为单项选择题;
  • 第 13~20 题为填空题;
  • 所有右移均针对非负整数;
  • 二进制位从右向左编号为第 0 位、第 1 位、第 2 位……

一、单项选择题

1. 表达式 13 & 10 的值是( )。

{{ select(1) }}

  • 2
  • 8
  • 11
  • 15

2. 表达式 12 | 5 的值是( )。

{{ select(2) }}

  • 5
  • 9
  • 13
  • 15

3. 表达式 9 ^ 14 的值是( )。

{{ select(3) }}

  • 5
  • 6
  • 7
  • 15

4. 对任意整数 x,表达式 x ^ x 的值一定是( )。

{{ select(4) }}

  • 0
  • 1
  • x
  • -1

5. 在固定的 8 位二进制中,~00010110 的结果是( )。

{{ select(5) }}

  • 00010111
  • 11101001
  • 11110110
  • 00001001

6. 表达式 5 << 2 的值是( )。

{{ select(6) }}

  • 10
  • 15
  • 20
  • 25

7. 表达式 40 >> 3 的值是( )。

{{ select(7) }}

  • 3
  • 5
  • 8
  • 20

8. 判断非负整数 n 是否为奇数,最合适的位运算表达式是( )。

{{ select(8) }}

  • n & 1
  • n | 1
  • n ^ 1
  • n << 1

9. 将正整数 n 的二进制表示中最低位的一个 1 消去,应使用( )。

{{ select(9) }}

  • n | (n - 1)
  • n ^ (n - 1)
  • n & (n - 1)
  • n & (n + 1)

10. 判断正整数 n 是否为 2 的整数次幂,正确条件是( )。

{{ select(10) }}

  • n > 0 && (n & (n - 1)) == 0
  • n > 0 && (n | (n - 1)) == 0
  • (n & 1) == 1
  • (n ^ (n - 1)) == 0

11. 将整数 x 的第 k 位设置为 1,应使用( )。

{{ select(11) }}

  • x & (1 << k)
  • x | (1 << k)
  • x ^ ~(1 << k)
  • x >> k

12. 将整数 x 的第 k 位清零,其他位保持不变,应使用( )。

{{ select(12) }}

  • x | ~(1 << k)
  • x ^ (1 << k)
  • x & ~(1 << k)
  • x << k

二、填空题

13. 计算 23 & 15

答案:{{ input(13) }}

14. 计算 18 | 9

答案:{{ input(14) }}

15. 计算 25 ^ 12

答案:{{ input(15) }}

16. 计算 7 << 3

答案:{{ input(16) }}

17. 计算 96 >> 4

答案:{{ input(17) }}

18. 执行下面代码后,x 的值是多少?

int x = 10;
x = (x << 1) ^ 3;

答案:{{ input(18) }}

19. 初始时 x = 44,连续执行两次 x &= x - 1,最终 x 的值是多少?

答案:{{ input(19) }}

20. 执行下面代码后,cnt 的值是多少?

int x = 45;
int cnt = 0;
while (x) {
    x &= x - 1;
    cnt++;
}

答案:{{ input(20) }}