given two integers and two bit positions. Set the first integer between the two bit positions to be that of the second integer.
Solution:
The trickiest part is to calculate the mask:
int replace_bits(int a, int b, int x, int y)
{
int mask = ((1 << (y - x + 1)) - 1) << x;
// Clear a and replace with that of b
return ((a & ~mask) | (b & mask));
}
Complexity:
time - O(1)Links and credits:
space - O(1)
http://www.careercup.com/question?id=13532675
No comments:
Post a Comment