I wanted to share another technique for determining if a number is odd/even in JavaScript - or any other programming language. The common solution to this problem is to use the modulus (`%`) operator:

With the modulus operator it's as simple as:

``````var isOdd = number % 2;
var isEven = !(number % 2);
``````

However, you can achieve the same result by using the bitwise operators and ANDing the number with `1`.

``````var isOdd = number & 1;
var isEven = !(number & 1);
``````

Both produce the same result, but the bitwise approach will be faster if you care about micro-optimisations.

## How does this work?

When you AND two numbers together the operation returns `1` if the matching bits from both operands are `1`.

So let's take a simple example, is the decimal number `10` odd?

First convert the decimal number to binary: `0000 1010`. Now let's AND that number with decimal `1`, which is `0000 0001` when converted to binary.

``````     0000 1010   // decimal 10
AND  0000 0001   // decimal 1
=  0000 0000
``````

If the AND operation produces `0` the number is even - as in the previous example.

Let's look at another example using an odd decimal number:

``````     0000 1011   // decimal 11
AND  0000 0001   // decimal 1
=  0000 0001
``````

If the AND operation produces `1` the number is odd - as in the previous example.

## Conclusion

Admittedly this isn't revolutionary, but it's good to understand how to use Bitwise operators and what type of problems they can solve.