This TypeScript library provides a bitmap implementation (Bitmap) that allows efficient manipulation of a bitmap data structure, useful for various indexing and set operations.
- Set Operations:
set,remove,contains, andclearoperations on the bitmap. - Logical Operations:
and,andNot,or, andxoroperations between bitmaps. - Iteration and Filtering:
rangeiteration, generator-based iteration via[Symbol.iterator], andfilterbased on user-defined conditions. - Count and Extremes: Methods to count set bits (
count), find the minimum and maximum set bit (min,max), as well as the minimum and maximum unset bit (minZero,maxZero). - Cloning: Supports cloning of the bitmap instance.
- Iterable Support: Can be used directly in
for...ofloops and spread syntax ([...bitmap]) for convenient iteration over set bits.
You can install the library via npm:
npm install bitmap-indeximport { Bitmap } from 'bitmap-index';
// Create a new Bitmap with a size of 32 bits
const bitmap = new Bitmap(32);
// Set bits
bitmap.set(2);
bitmap.set(5);
bitmap.set(10);
// Check if a bit is set
console.log(bitmap.contains(5)); // true
console.log(bitmap.contains(3)); // false
// Perform logical operations with another bitmap
const otherBitmap = new Bitmap(32);
otherBitmap.set(5);
otherBitmap.set(10);
const andResult = bitmap.and(otherBitmap); // Bitmap with bits [5, 10]
const orResult = bitmap.or(otherBitmap); // Bitmap with bits [2, 5, 10]
const xorResult = bitmap.xor(otherBitmap); // Bitmap with bits [2]
// Iterate over set bits using range
bitmap.range((x) => {
console.log(`Bit ${x} is set`);
return true; // Continue iterating
});
// Iterate using for...of (generator)
for (const bit of bitmap) {
console.log(`Iterated bit: ${bit}`);
}
// Spread operator
const bitsArray = [...bitmap]; // [2, 5, 10]
// Filter based on a condition
bitmap.filter((x) => x % 2 === 0); // Remove odd-numbered bits
// Count the number of set bits
console.log(bitmap.count()); // 1
// Find the minimum and maximum set bits
console.log(bitmap.min()); // 2
console.log(bitmap.max()); // 10
// Clear all bits
bitmap.clear();
// Clone the bitmap
const clonedBitmap = bitmap.clone();-
Bitmap Class
- Constructor:
new Bitmap(size: number = 32) - Set Operations:
set(x: number),remove(x: number),contains(x: number),clear() - Logical Operations:
and(bitmap: Bitmap),andNot(bitmap: Bitmap),or(bitmap: Bitmap),xor(bitmap: Bitmap) - Iteration and Filtering:
range(fn: (x: number) => boolean),filter(fn: (x: number) => boolean),[Symbol.iterator](): Iterator<number> - Count and Extremes:
count(),min(),max(),minZero(),maxZero() - Cloning:
clone(): Bitmap
- Constructor:
This library is designed for bitmap indexing operations and is not related to image processing. For more information on bitmap indexing, please refer to Bitmap Index Wiki.
Feel free to contribute, report issues, or suggest improvements on GitHub.