Remember that ALL the bits need to be reversed, not just the '1' bits. The following code compiles, links cleanly and works properly. #include <stdio.h> #include <stdlib.h> #define INT_BITS (32) int main() { unsigned int input; unsigned int result = 0; unsigned int i; // loop counter printf("\nEnter the unsigned Number: "); if( 1 != scanf("%u", &input) ) { // scanf failed perror( "scanf failed" ); exit( EXIT_FAILURE ); } // implied else, scanf successful for(i=0;i<INT_BITS;i++) { result <<= 1; result |= input & 1; input >>=1; } // end for fprintf(stdout, "%u\n", result ); return(0); } // end function: main