Using the modulo operator
The modulo operator (%
) returns the remainder of a division operation. Given that, we can check if a number is even or odd by dividing it by 2
and checking the remainder. If the remainder is 0
, the number is even, otherwise it’s odd.
代码实现
const isEven = num => num % 2 === 0;
const isOdd = num => num % 2 === 1;
isEven(3); // false
isOdd(3); // true
Using the bitwise AND operator
The bitwise AND operator (&
) returns 1
if both bits are 1
, otherwise it returns 0
. The binary representation of an even number always ends with 0
, while the binary representation of an odd number always ends with 1
. As such, applying the bitwise AND operator to a number and 1
will return 0
for even numbers and 1
for odd numbers. In order to convert this result to a boolean, we can use the Boolean()
function.
使用样例
const isEven = num => !Boolean(num & 1);
const isOdd = num => Boolean(num & 1);
isEven(3); // false
isOdd(3); // true
Notes
- While both approaches work, the modulo operator is more readable and should be preferred.
- Apart from these two approaches, other bitwise operators, such as the bitwise XOR operator (
^
), can also be used to check if a number is even or odd.