ui nextsmallest( ui n)
{
    ui x;
    int ctr=-1;
    x= (n&~(n-1)); // the lowest bit set in 'n'
    while( x&n)    // finds the number of consecutive bits set from the
lowest one
    {
           x<<=1;
           ctr++;
    }
    n^=x;
    n&=(~(x-1));
    n+=(1<<ctr)-1;
    return n;
}

Better than the previous one.

-- 
Himanshu Sachdeva

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.

Reply via email to