Data structure holding bits
Boolean[]: 4-20bytes
boolean[]: 1bytes
BitSet: 1bit
Refer: boolean[] vs. BitSet: Which is more efficient?
Number of bit set
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| static int NumberOfSetBits(int i)
{
i = i - ((i >>> 1) & 0x55555555);
i = (i & 0x33333333) + ((i >>> 2) & 0x33333333);
return (((i + (i >>> 4)) & 0x0F0F0F0F) * 0x01010101) >>> 24;
}
static int NumberOfSetBits(int i){
int cnt = 0;
while(i != 0){
i = i & (i - 1); //equivalent to i -= (i & -i);
++cnt;
}
return cnt;
}
|
Refer: UVA10496
Last set bit
Get last set bit, useful in Fenwick tree.
1
2
3
| static int lastSetBit(int n) {
return n & (-n);
}
|
Remove last set bit
Rotate bit
1
2
3
4
5
| private int rotate8_(int data, int distance){
distance = distance & 7;
data &= 0xFF;
return (data >> distance) | (data << (8 - distance)) & 0xFF;
}
|
Refer: GJ-2022-1B-C