CSP-S 提高级 · CSP 2026 提高级第一轮 第 1 题

选择题 · 答案 D · 考点:位运算、原码、反码与补码、基础语法

← 整套速查表 CSP-S 提高级 全部真题

题目

【单选】执行下列代码后,cnt 的值是( )。

int x = 2026, cnt = 0;
while (x) {
    x &= x - 1;
    cnt++;
}
答案:D

考点

位运算 讲解 →位运算 真题汇总 →原码、反码与补码基础语法

解题思维

看到 x &= x-1 → 先想消去最低位 1

常见错误

易把 x &= x-1 误作减 1 或右移计数;2026 二进制 1 的个数数错(共 8 个)

详细解析(节选)

考点:位运算技巧|popcount(二进制中 1 的个数)

解析

每执行 x &= x-1 就消去 x 二进制表示中最低位的 1。循环在 x 变为 0 时结束,故 cnt 等于 2026 二进制中 1 的个数。

同考点真题

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断