UNPKG

bit-set-js

Version:

JavaScript implementation of bit arrays

92 lines (53 loc) 2.34 kB
# BitSetJS Library to create and deal with a BitSet in ES6. BitSet creates a bit array, which allows us to store a big amount of binary flags in a very memory-wise efficient manner. This library supports these operations: - getting, setting and toggling of individual bits - counting how many 1s bits are in the array - serialization to and from strings (`001101` binary format) - serialization to and from arrays - Use in the Browser, or as a CommonJS module ## Usage ``` a = new BitArray(6); a.set(0); a.set(3); a.stringify(); // "001001" a.get(1); // false a.get(3); // true ``` Internally, the library stores the bit array, into 32 bits integers objects. So, if you create a 64 bits array, the library will internally hold an array of 2 integers. You can call **bitset.getData()** to get this private array of integers, and transfer this array in client-server communications. ## API You can initialiaze a BitSet with threee different constructors: **BitSet(size=32 :int, value=0 :boolean)** Creates a new bit array with the given size and the selected value as default. Value can be 0 or 1. Ex: `new Bitset(3, 1).stringify() == '111'` **BitSet(binary : string)** Takes a binary number *0101*, and converts it to the correspondent bits in the array. The rightmost carachter is the bit 0. **BitSet(ints : array[int])** Sets the the array of integers as the backing stored data of the bitset. Ex: `new BitSet([3]).stringify() == '00000000000000000000000000000011';` The operations supported by the BitSet: **length** This property contains the number of bits in the bitset. **set(N)** Sets the N bit to 1. Returns `true` if the operation was succesful. **get(N)** Returns the value of the bit at `N` (boolean) **toggle(N)** Toggles (inverts) the bit at `N` index. **toString()** Returns "[object BitSet]" in order to identify the object as a Bitset. **stringify()** Returns the binary representation of the bitSet. **getData()** Gets the data with the integers holding the bits information. Ex: `new BitSet("101").getData() // [5]` **count()** Returns the total number of bits set to 1 in this BitSet. **invert()** Inverts this BitSet. ## How to include This library has been writen in ES6. However, an ES5 version (compiled by babel 5) is also distributed. ## Licence GNU GENERAL PUBLIC LICENSE