Using the bitwise operators in JavaScript you can do all kinds of interesting things.

For example, it is possible to use the operator "bitwise negation" (the tilde `~`

) to round off numbers:

Using the bitwise operators in JavaScript you can do all kinds of interesting things.

For example, it is possible to use the operator "bitwise negation" (the tilde `~`

) to round off numbers:

It is helpful because rounding a number using the "bitwise negation" operator is much faster in many browsers than using `Math.floor`

.

This feature is especially useful when rounding a number has to be repeated very often, such as when manipulating the pixel data of a `<canvas>`

element where several thousand pixels have to be compared one by one.

Since I use exactly this use case in my projects (see for example glitch-canvas, I have used `~~`

as a replacement for `Math.floor()`

in general.

This was a mistake.

Because there are numbers for which the results of `~~`

and `Math.floor()`

*not* match:

It is helpful because rounding a number using the "bitwise negation" operator is much faster in many browsers than using `Math.floor`

.

This feature is especially useful when rounding a number has to be repeated very often, such as when manipulating the pixel data of a `<canvas>`

element where several thousand pixels have to be compared one by one.

Since I use exactly this use case in my projects (see for example glitch-canvas, I have used `~~`

as a replacement for `Math.floor()`

in general.

This was a mistake.

Because there are numbers for which the results of `~~`

and `Math.floor()`

*not* match:

Many shortcuts and hacks in code are helpful for special cases, but they should be used with caution and not generalized. That is why they are called shortcuts and hacks.

I learned something today, hope you did as well. Until next time!

## Leave a comment

## Replied on your own website? Send a Webmention!