First of all, it’s actually not accurate to say that

```
x % 2 == x & 1
```

Simple counterexample: `x = -1`

. In many languages, including Java, `-1 % 2 == -1`

. That is, `%`

is not necessarily the traditional mathematical definition of modulo. Java calls it the “remainder operator”, for example.

With regards to bitwise optimization, only modulo powers of two can “easily” be done in bitwise arithmetics. Generally speaking, only modulo powers of base *b* can “easily” be done with base *b* representation of numbers.

In base 10, for example, for non-negative `N`

, `N mod 10^k`

is just taking the least significant `k`

digits.

### References

- JLS 15.17.3 Remainder Operator %
- Wikipedia/Modulo Operation