Tuesday, April 21, 2015
[System design] Use Bitmap to store integers
Use Bitmap to store integers
Read an article the other day about Bitmap, the idea is to squeeze every bit of an integer to store an integer, hence for N integer we can save them using one N/8 size array. Looks pretty interesting.
Solution:
int main() {
int i, j, temp;
int bitmap[1000/8];
for(i = 0; i < 1000; i++)
{
// store integer to bit map
// if i is multiple of 8, then i, i+1...i+7 only differ in last 3 bits, // after divided by 8 (right shift by 3), they return same index,
// i & 7 (i & 0b111) retrieves 'value' of last 3 bits and store it in 'value' th position
bitmap[i/8] |= 1<<(i & 7);
}
for(i = 0; i < 1000/8; i++)
{
// read from bitmap
for(j = 0; j < 8; j++)
{
if(1<<j & bitmap[i])
{
temp = i * 8 + j;
printf("%d ", temp);
}
else
{
printf("no hit!\n");
}
}
printf("\n");
}
return 0;
}
Labels:
System design
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment