Computing number of data blocks using bitwise operations


Given a chunk of data of size e.g 500 bytes, assume you want to make sure that the data size is a multiple of a single block size of e.g 32 bytes. For this you normally would divide the size of the total data by the size of the block size and see if the remaining is 0. This article shows you how to do the same thing in a different way; using only bitwise operations.


Example of determining number of blocks using bitwise operations

#include<stdio.h>
 
int main() {
 
    int DataLen = 500;
    int BlockSize = 32;
    int BlockCount = 0;
    int UsableData = 0;
 
    UsableData = DataLen & (~(BlockSize-1));
    BlockCount = UsableData/BlockSize;
 
    printf("Original data size is %d\n", DataLen);
    printf("Usable data is %d (%d blocks) \n", UsableData, BlockCount );
 
return 0;
 
}

Building and running

> gcc test.c
> ./a.out

Original data size is 500
Usable data is 480 (15 blocks)


Labels: Wireless Internet Security Coding Network Monitoring

Comment

Enter your comment (wiki syntax is allowed):
PYUND

Wireless Internet Security Performance RADIUS server Wireless Internet Security Performance RADIUS server