Important
Please participate in the survey here!
(open until end of February)
To achieve a better sample size, I'd highly appreciate if you could circulate the link to this survey in your own networks.
Note
This is one of 189 standalone projects, maintained as part of the @thi.ng/umbrella monorepo and anti-framework.
🚀 Help me to work full-time on these projects by sponsoring me on GitHub. Thank you! ❤️
1D / 2D bit field implementations.
All implementations are backed by typed arrays. Due to Uint32Array
backing the width is always rounded to a multiple of 32.
STABLE - used in production
Search or submit any issues for this package
- @thi.ng/adjacency - Sparse & bitwise adjacency matrices, lists and selected traversal algorithms for directed & undirected graphs
yarn add @thi.ng/bitfield
ES module import:
<script type="module" src="https://cdn.skypack.dev/@thi.ng/bitfield"></script>
For Node.js REPL:
const bitfield = await import("@thi.ng/bitfield");
Package sizes (brotli'd, pre-treeshake): ESM: 1.46 KB
One project in this repo's /examples directory is using this package:
Screenshot | Description | Live demo | Source |
---|---|---|---|
![]() |
Responsive image gallery with tag-based Jaccard similarity ranking | Demo | Source |
import { BitField, BitMatrix } from "@thi.ng/bitfield";
// size always rounded up to a multiple of 32
const field = new BitField(16);
field.setAt(0);
// if 2nd arg is false, the bit will be cleared
// setAt returns non-zero value if bit was previously set
field.setAt(31, true);
// 0
// returns non-zero value if bit is set
field.at(0)
// -2147483648
field.at(1)
// 0
field.toString();
// 10000000000000000000000000000001
field.resize(64)
// 1000000000000000000000000000000100000000000000000000000000000000
const mat = new BitMatrix(8, 32);
for(let i = 0; i < 8; i++) mat.setAt(i, i);
mat.at(7, 7);
// 16777216
mat.toString();
// 10000000000000000000000000000000
// 01000000000000000000000000000000
// 00100000000000000000000000000000
// 00010000000000000000000000000000
// 00001000000000000000000000000000
// 00000100000000000000000000000000
// 00000010000000000000000000000000
// 00000001000000000000000000000000
If this project contributes to an academic publication, please cite it as:
@misc{thing-bitfield,
title = "@thi.ng/bitfield",
author = "Karsten Schmidt",
note = "https://thi.ng/bitfield",
year = 2016
}
© 2016 - 2024 Karsten Schmidt // Apache License 2.0