gsl wrote:
Can anyone tell me how to reverse an integer number represented in
binary form(or we can say binary reversal of int)?
for ex: given 101100 .... the answer should be 001101
Your homework question is pretty silly; it would be more generally
useful to implement bitwise rotates, or maybe matrix transpose, than
this reversal. Nonetheless I think this works.
#include <stdio.h>
#include <stdlib.h>
void
printb(int d)
{
int sz = 8 * sizeof d;
int i;
for (i = sz - 1; i >= 0; i--) {
printf("%s", (d & (1 << i)) ? "1" : "0");
}
}
int
rev(int src)
{
int i;
int retval = 0;
int sz = 8 * sizeof src;
for (i = 0; i < sz; i++) {
retval |= (((src) & 1) << (sz - i - 1));
src >>= 1;
}
return retval;
}
int
main(int argc, char **argv)
{
int d;
d = atoi(argv[1]);
printb(d);
printf(", ");
printb(rev(d));
printf("\n");
return 0;
}