如果 a 为 int 类型的变量,下列哪个表达式可以正确求出满足“小于等于 a 且是 4 的倍数”的整数中最大的?
这题考位运算求4的倍数。拿到题别急着循环或除法,先看二进制:4的倍数末两位必是00。所以核心思路就是‘保留高位,强制末两位变0',用按位与(~3)就能一步到位。
考生最容易掉进两个坑:一是看到倍数就下意识想用除法或循环,完全忽略了位运算的秒杀特性;二是被选项D迷惑,以为它是某种取整技巧,其实D是‘向上取整到4的倍数’,彻底违背了题目‘小于等于a'的硬性条件。另外要注意负数情况,选项B对负数左移会破坏符号位,导致结果跑偏。
【考点】按位与、按位取反、二进制特征
题目要求找到小于等于a且是4的倍数的最大整数。在二进制视角下,4等于100,所以任何4的倍数,其最低两位(第0位和第1位)必然都是0。这意味着,只要把a的二进制表示中最低两位清零,高位保持不变,得到的结果就是满足条件的最大值。
【命题视角】命题人故意把‘4的倍数’包装成看似需要除法或循环的题目,考察的是考生是否具备‘二进制思维’。对于GESP三级考生,能跳出常规算术运算,直接用位操作解决,是区分度的关键。这类题的通法其实是:求小于等于a的最大k的倍数(k是2的幂),公式就是 a & (~k+1)。这里k=4,k+1=5,~5在二进制下正好是...111011,末两位是00,与a做按位与,精准清零。
【逐项拆解】
【避坑提醒】做题时一定要圈出‘小于等于’这个限定词,任何让结果大于a的操作都是错的。另外,涉及移位运算时,务必考虑负数情况,不能想当然。
【考频趋势】根据题库数据,‘基础语法’模块在2023年考了287题,2024年暴涨到413题,2025年仍维持在401题的高位,说明这类考察二进制思维和位运算的题目是近年来的高频考点,且难度有小幅上升趋势。GESP三级作为基础赛段,这类‘用位运算秒杀’的题非常典型,考生必须熟练掌握。
【预测】基于2024-2025年高频趋势,未来考试可能会继续增加此类题目,甚至可能把k换成8、16等更大的2的幂,或者混合其他位运算(如异或、右移)增加干扰项。但只要抓住‘二进制末位清零’这个核心,解题思路就不会变。