1. #include<stdio.h>  
  2.  
  3. void convertToBinary(char *psNumber,int number);  
  4. void showBinary(char *psNumber);  
  5. int numberReverse(int number,int bit);  
  6.  
  7. int main(void){  
  8.     int number;  
  9.     int bits;  
  10.     char sNumber[8*sizeof(int)+1];  
  11.       
  12.     puts("Enter a number");  
  13.     while((scanf("%d",&number))==1){  
  14.         puts("Enter a bits");  
  15.         scanf("%d",&bits);  
  16.         convertToBinary(sNumber,number);  
  17.         showBinary(sNumber);  
  18.         number = numberReverse(number,bits);  
  19.         convertToBinary(sNumber,number);  
  20.         showBinary(sNumber);  
  21.     }  
  22.     puts("Done");  
  23.     getchar();  
  24.     return 0;  
  25. }  
  26. void convertToBinary(char *psNumber,int number){  
  27.     int index;  
  28.     for(index=(8*sizeof(int)-1);index>=0;index--){  
  29.         psNumber[index] = (number & 1) + '0';  
  30.         number >>=1;  
  31.     }  
  32.     psNumber[8*sizeof(int)] = '\0';  
  33. }  
  34. void showBinary(char *psNumber){  
  35.      int index;  
  36.      int i=1;  
  37.      for(index=0;index<(8*sizeof(int));index++){  
  38.          putchar(*psNumber);  
  39.          if(i%4==0){  
  40.              putchar(' ');  
  41.          }  
  42.          i++;  
  43.          *psNumber++;  
  44.      }  
  45.      printf("\n");  
  46. }  
  47. int numberReverse(int number,int bit){  
  48.     int mask=0;  
  49.     int bitval=1;  
  50.     while(bit-->0){//求掩码的过程   
  51.         mask = mask | bitval;  
  52.         bitval <<=1;  
  53.     }  
  54.     //printf("%d",mask);  
  55.     return number^mask;  
  56. }