In the "C and the pointer" this book to see a problem requires a 32-digit data high and low level interchange, prompted to do with reverse.c. On the internet probably did not find a more appropriate answer, try to write their own hands.
With recursion, the remainder is shifted left to return the result.
#include <stdio.h> unsigned int reverse (unsigned int value);
int main (void) {
unsigned int a = 25;
int res = 0;//is the value returned as result. Bitwise OR get the original value when all is 0.
printf ("%ud", Reverse (res,a,0));//Print result
return 0;
}
unsigned int reverse (unsigned int res,unsigned int ul32,int count) {
unsigned int remainder = ul32%2;//pick remainder
unsigned int temp = (int) ul32/2;//fetch result
res=res<<1;//the result to the left, for recursion, low to high
if (count<31) {//Loop End condition
res= (Res|remainder)//result with remainder phase or, get the number that needs to move left
Res=reverse (Res,temp,++count);//recursive call, assigning results to res variables
}
return res; End recursion returns the result.
}