Skip to content

北美 Amazon Intern 面试题:能被 4 整除的数(位运算)

这道题是小红书上看来的,只有一句话,用位运算判断一个数是否能被 4 整除。

解题思路

要判断一个数能不能被 4 整除,我们可以找找规律:

  • 410=1002
  • 810=10002
  • 1210=11002
  • 1610=100002

观察到所有数字的末尾都是 00,也就是当且仅当一个数的最后两位是 00 时,这个数才能被 4 整除。

因此只要将一个数的二进制表现与 11_2 进行按位与运算,如果结果为 0,则这个数能被 4 整除,否则不能。

代码实现

ts
function solution(n: number): boolean {
  return (n & 3) === 0;
  // 或者
  // return (n & 0b11) === 0;
}
python
def solution(n: int) -> bool:
    return (n & 3) == 0

类似的,判断能不能被 2 整除就是 (n & 1) === 0,判断能不能被 8 整除就是 (n & 7) === 0。但是这个技巧只能用在判断 2 的幂次方上,如果要判断非 2 的幂次方的话,还是取模运算比较快。

页面历史

Powered by VitePress and Elysium UI.
This site uses Microsoft Clarity to see how you use our website. By using our site, you agree that we and Microsoft can collect and use this data.