【单选】执行下列代码后,cnt 的值是( )。
int x = 2026, cnt = 0;
while (x) {
x &= x - 1;
cnt++;
}看到 x &= x-1 → 先想消去最低位 1
易把 x &= x-1 误作减 1 或右移计数;2026 二进制 1 的个数数错(共 8 个)
考点:位运算技巧|popcount(二进制中 1 的个数)
每执行 x &= x-1 就消去 x 二进制表示中最低位的 1。循环在 x 变为 0 时结束,故 cnt 等于 2026 二进制中 1 的个数。