not exactly understanding the function described here:
Write following function:
Its value should be the result of shifting the bits in i to the left by n places, with the bits that were "shifted off" moved to the right end of i.Code:unsigned int rotate_left(unsigned int i, int n); /* prototype *
Ex. the call rotate_left(0x1234,4) should return 0x2341, if integers are 16bits long.
What I am not understanding is how do I access the "bits" and shift these values around??
for example, a 16bit code could be 0453A678B123C456 and shifting 5 to left would return 0678B123C456453A Right???
the leading zero is always 0, as that is what I understood to be the bit designating the sign of the whole "string" of numbers
0 = positive
1 = negative
If this return I have listed is correct, then do you access the bits by a simple expression?? All we played around with in understanding the logic is an expression like
i = i << 2; or i =<< 2;
j = j >> 5; or j =>> 5;
does the following code work in bit shifting??
[code]
unsigned int rotate_left(unsigned int i, int n)
{
i =<<n;
}
This doesn't look right compared to similar examples in book. I am stumped with the bitwise operators needed to access bits..to set, clear and test a bit.
Anyone got any good examples to help me??



LinkBack URL
About LinkBacks



