binary-numbers

Classes that make working with binary numbers easy!

Usage no npm install needed!

<script type="module">
  import binaryNumbers from 'https://cdn.skypack.dev/binary-numbers';
</script>

README

binary-numbers

Build Status Code Coverage NPM Version Number

Classes that make working with binary numbers easy!

Allows one to easily work with many different types of binary formats, from standard integer binary numbers to IEEE 754 floating point binary numbers. Also supports numbers which can either grow in size or remain fixed. Includes five different explicitly sizes fixed-length integer classes: Int8, Int16, Int32, Int64, and Int128.

This package is still in early development, and I'd like to make it as good as possible. If you have any suggestions, please open a pull request!

Usage

Bit Manipulation

import { FixedInt } from 'binary-numbers';

const int = new FixedInt(94)       // 0b1011110
                    .clearBit(1)   // 0b1011100
                    .clearBit(3)   // 0b1010100
                    .setBit(5)     // 0b1110100
                    .and(0x1F)     // 0b0010100
                    .shiftLeft(2); // 0b1010000

console.log(int.toDecimal); // 80

Arithmetic

import { Int8 } from 'binary-numbers';

// 12 + 48 + 61
const i1 = new Int8(12);
const i2 = new Int8('0b00110000'); // 48
const i3 = new Int8([1, 0, 1, 1, 1, 1, 0, 0]); // 60, note the
                                               // lsb -> msb convention

const result = i1.add(i2).add(i3);

console.log(result.toString()); // Int8[0b01111001]
console.log(result.bits); // [1, 0, 0, 1, 1, 1, 1, 0]
console.log(result.toDecimal) // 121

Floating Point

TODO

API

See the API Documentation

Install

With npm installed, run

$ npm install binary-numbers

License

MIT