Skip to content

Commit 062b518

Browse files
committed
FEAT: add bitmap by JS
1 parent 981973c commit 062b518

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed

javascript/45_bitmap/bitmap.js

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
2+
class BitMap {
3+
constructor(n) {
4+
this.nbits = n;
5+
this.blk = new Array(Math.floor(n / 16) + 1);
6+
this.blk.fill(0);
7+
}
8+
9+
get(k) {
10+
if( k > this.nbits) return false;
11+
12+
let byteIndex = Math.floor(k / 16);
13+
let bitIndex = k % 16;
14+
15+
return !((this.blk[byteIndex] & (1 << bitIndex)) === 0);
16+
}
17+
18+
set(k) {
19+
if( k > this.nbits) return;
20+
21+
let byteIndex = Math.floor(k / 16);
22+
let bitIndex = k % 16;
23+
24+
this.blk[byteIndex] = this.blk[byteIndex] | (1 << bitIndex);
25+
26+
}
27+
}
28+
29+
let aBitMap = new BitMap(20);
30+
31+
aBitMap.set(1);
32+
aBitMap.set(3);
33+
aBitMap.set(5);
34+
aBitMap.set(7);
35+
aBitMap.set(9);
36+
aBitMap.set(11);
37+
aBitMap.set(13);
38+
aBitMap.set(15);
39+
aBitMap.set(17);
40+
aBitMap.set(19);
41+
42+
for(let i = 0; i < 21; i++) {
43+
console.log(aBitMap.get(i));
44+
}

0 commit comments

Comments
 (0)