File tree Expand file tree Collapse file tree 1 file changed +44
-0
lines changed Expand file tree Collapse file tree 1 file changed +44
-0
lines changed Original file line number Diff line number Diff line change 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+ }
You can’t perform that action at this time.
0 commit comments