How to create a bitset in JavaScript

2 Answers

0 votes
// Using an Array of Booleans

class BitSet {
    constructor(size) {
        this.bits = new Array(size).fill(false);
    }

    set(index) {
        this.bits[index] = true;
    }

    clear(index) {
        this.bits[index] = false;
    }

    get(index) {
        return this.bits[index];
    }

    print() {
        let s = this.bits.map(bit => bit ? "1" : "0").join(""); // Convert array to string
        console.log(s);
    }
}

const bitset = new BitSet(8);

bitset.set(5);

bitset.print();  

console.log(bitset.get(5)); // true

bitset.clear(5);

console.log(bitset.get(5)); // false

bitset.print();  



/*
run:

00000100
true
false
00000000

*/

 



answered May 7 by avibootz
0 votes
// Using a single number to store the bits

class BitSet {
    constructor() {
        this.bits = 0;
    }

    set(index) {
        this.bits |= (1 << index);
    }

    clear(index) {
        this.bits &= ~(1 << index);
    }

    get(index) {
        return (this.bits & (1 << index)) !== 0;
    }
    
    print() {
        console.log(String(this.bits.toString(2)).padStart(16, '0'));
    }
}

const bitset = new BitSet();
bitset.set(5);

bitset.print();

console.log(bitset.get(5)); // true

bitset.clear(5);

console.log(bitset.get(5)); // false

bitset.print();



/*
run:

0000000000100000
true
false
0000000000000000

*/

 



answered May 7 by avibootz
edited May 7 by avibootz

Related questions

1 answer 16 views
1 answer 10 views
1 answer 14 views
1 answer 13 views
2 answers 19 views
...