This is a `playground`

to test code. It runs a full `Node.js`

environment and already has all of `npm`

’s 400,000 packages pre-installed, including `bit-twiddle`

with all `npm`

packages installed. **Try it out**:

var bitTwiddle = require("bit-twiddle")

- all documents on RunKit are public
`require()`

any package directly from npm- use arrow functions, classes, template strings, and most of ES6
`await`

any promise instead of using callbacks (example)- create your own embedded
**node.js**snippets

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

This is a collection of miscellaneous bit twiddling hacks ported to JavaScript, mostly taken from here:

Via npm:

```
npm install bit-twiddle
```

`sign(v)`

Computes the sign of the integer v. Returns:

- -1 if v < 0
- 0 if v === 0
- +1 if v > 0

`abs(v)`

Returns the absolute value of the integer v

`min(x,y)`

Computes the minimum of integers x and y

`max(x,y)`

Computes the maximum of integers x and y

`isPow2(v)`

Returns `true`

if v is a power of 2, otherwise false.

`log2(v)`

Returns an integer approximation of the log-base 2 of v

`log10(v)`

Returns log base 10 of v.

`popCount(v)`

Counts the number of bits set in v

`countTrailingZeros(v)`

Counts the number of trailing zeros.

`nextPow2(v)`

Rounds v up to the next power of 2.

`prevPow2(v)`

Rounds v down to the previous power of 2.

`parity(v)`

Computes the parity of the bits in v.

`reverse(v)`

Reverses the bits of v.

`interleave2(x,y)`

Interleaves a pair of 16 bit integers. Useful for fast quadtree style indexing. (See wiki: http://en.wikipedia.org/wiki/Z-order_curve )

`deinterleave2(v, n)`

Deinterleaves the bits of v, returns the nth part. If both x and y are 16 bit, then it is true that:

```
deinterleave2(interleave2(x,y), 0) === x
deinterleave2(interleave2(x,y), 1) === y
```

`interleave3(x,y,z)`

Interleaves a triple of 10 bit integers. Useful for fast octree indexing.

`deinterleave3(v, n)`

Same deal as `deinterleave2`

, only for triples instead of pairs

`nextCombination(x)`

Returns next combination ordered colexicographically.

Code is ported from Sean Eron Anderson's public domain bit twiddling hacks page. http://graphics.stanford.edu/~seander/bithacks.html JavaScript implementation (c) 2013 Mikola Lysenko. MIT License

- package on npmhttps://npmjs.com/package/bit-twiddle
- licenseMIT

RunKit is a free, in-browser JavaScript dev environment for prototyping **Node.js** code, with every **npm** package installed. Sign up to share your code.

Sign Up for Free