返回首页

如何判断一个数是奇数还是偶数

判断一个整数是否为偶数是编程中最基础的问题之一。本文将从最直观的方式出发,逐步探讨几种不同的实现方式及其背后的原理。

一、取模运算法

最直接的方式是利用取模运算符 %,当一个数除以 2 的余数为 0 时,它就是偶数:

function isEven(n) {
  return n % 2 === 0;
}

这种写法简洁直观,是大多数初学者接触到的第一种方案。

二、位运算法

在二进制层面,偶数的最低位(LSB)始终为 0,奇数则为 1。因此我们可以用按位与运算快速判断:

function isEven(n) {
  return (n & 1) === 0;
}

位运算法在大量数据处理场景中比取模法更快,因为它直接操作二进制位,无需除法指令。

三、性能对比

在现代 JavaScript 引擎中,两种方法的性能差异已经非常微小。V8 引擎会对取模运算进行大量优化,但在极端高频调用的场景下,位运算仍是首选。

四、注意事项

  • 负数的取模结果在 JavaScript 中始终与被除数同号,即 -4 % 2 === 0true,符合预期。
  • 浮点数不适用上述方法,需要先取整或使用 Number.isInteger() 判断。
  • 使用位运算时要注意精度问题,超大数值(超过 Number.MAX_SAFE_INTEGER)可能导致结果不准确。

看似简单的问题,背后往往隐藏着计算机底层的运作逻辑。多问一个"为什么",就能多理解一层本质。

五、完整示例

// 取模法
const isEvenMod = n => n % 2 === 0;

// 位运算法
const isEvenBit = n => (n & 1) === 0;

// 测试
[0, 1, 2, -3, 100].forEach(n => {
  console.log(`${n} 是偶数: ${isEvenMod(n)}`);
});

评论

加载评论中...