Sunday, February 23, 2014

C Programming : Reverse bits in a Number

/* Function to reverse bits of num */
unsigned int reverseBits(unsigned int num)
{
    unsigned int  NO_OF_BITS = sizeof(num) * 8;
    unsigned int reverse_num = 0, i, temp;

    for (i = 0; i < NO_OF_BITS; i++)
    {
        temp = (num & (1 << i));
        if(temp)
            reverse_num |= (1 << ((NO_OF_BITS - 1) - i));
    }

    return reverse_num;
}

OR 

int reverseBits(unsigned int num)
{
    unsigned int temp = num;
// Reverse the bits in this number.
// temp will have the reversed bits of num.
    int i = 0;
    for (i = (sizeof(num)*8-1); i > 0; i--)
    {
        temp = temp | (num & 1);
        temp <<= 1;
        num >>= 1;
    }
    temp = temp | (num & 1);
    return(temp);
}

No comments:

Post a Comment