题目
在 C++ 语言中,所有 int 类型的值,经过若干次左移操作(<<)后,它们的值总会变为 $0$。( )
答案:A
考点
解题思维
看到'左移'→想补码高位补零;看到'若干次'→想移够32位清空所有位。
常见错误
易把左移和右移搞混,以为负数左移保留符号位或溢出回绕;其实补码左移只会把符号位挤出去,不会回绕。
详细解析(节选)
考点:二进制表示|位运算|有符号数溢出
记忆:int 补码左移本质是高位补零、低位挤掉,移够 32 次所有位全成 0 → 答案 A. 正确
- 易混点 1:负数左移不会保留符号位,符号位会被挤出去。
- 易混点 2:“若干次”看似模糊,实则只要≥32 次就能清空所有位。
同考点真题
- 第 14 题· NOIP 2007 普及组初赛试题 · 答案 C看解析 →
- 第 23 题· NOIP 2007 普及组初赛试题 · 答案 15,46看解析 →
- 第 5 题· NOIP 2007 提高组初赛试题 · 答案 A看解析 →
- 第 20 题· NOIP 2008 普及组初赛试题 · 答案 D看解析 →
- 第 23 题· NOIP 2008 普及组初赛试题 · 答案 23看解析 →