正在载入在线练习界面,本页内容可直接阅读…

AK CSP › CSP-S 2023 第一轮真题 › 第21题

CSP-S 2023 第一轮 第21题:当输入为“64”时,执行完第5行后×的值为()

阅读程序·单选 · 程序基本概念与数据类型 · 答案 D

题目

#include <iostream>
using namespace std;

unsigned short f(unsigned short x) {
    x ^= x << 6;
    x ^= x >> 8;
    return x;
}
int main() {
    unsigned short x;
    cin >> x;
    unsigned short y = f(x);
    cout << y << endl;
    return 0;
}

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

本小题

当输入为 64 时,执行完第 $5$ 行后 x 的值为()。

选项

  • A. 8256
  • B. 4130
  • C. 4128
  • D. 4160

答案

D

题解

选 D.4160。

第 5 行是: ``cpp x ^= x << 6; ` 等价于: `cpp x = x ^ (x << 6); ``

其中,<< 6 表示左移 6 位,^ 表示按位异或(对应位不同为 1,相同为 0)。

输入 x = 64,则 x << 6 = 64 × 2⁶ = 4096。用二进制计算:

``text 64: 0000 0000 0100 0000 4096: 0001 0000 0000 0000 异或结果: 0001 0000 0100 0000 ``

所以执行完第 5 行后,x = 4096 + 64 = 4160。

真题版权归 CCF 所有,本站仅用于非商业教学用途。页面加载后可直接在线作答,作答记录保存在本浏览器或账号中。 京ICP备2026056990号-1 京公网安备11010502062986号