fork download
  1. #include <stdio.h>
  2. unsigned int reverse(unsigned int A) {
  3. unsigned int left,right,count,l,r;
  4. count = (sizeof(A)*8);
  5. left=count-2;right=0;
  6. while(left>right)
  7. {
  8. printf("A= %d left = %d right = %d\n",A>>0,left,right);
  9. r=(A>>right)&1;
  10. l = (A>>(left))&1;
  11. printf(" l = %d r = %d\n",l,r);
  12. if(l^r)
  13. {
  14. A = A^(1<<(left));
  15. printf("lA=%d\n",A);
  16. A=A^(1<<(right));
  17. printf("rA=%d\n",A);
  18. }
  19. left--;right++;
  20. }
  21. return A;
  22. }
  23.  
  24. int main(void) {
  25. // your code goes here
  26. printf("rev= %d\n",reverse(1));
  27. return 0;
  28. }
  29.  
Success #stdin #stdout 0s 2168KB
stdin
Standard input is empty
stdout
A= 1 left = 30 right = 0
 l = 0 r = 1
lA=1073741825
rA=1073741824
A= 1073741824 left = 29 right = 1
 l = 0 r = 0
A= 1073741824 left = 28 right = 2
 l = 0 r = 0
A= 1073741824 left = 27 right = 3
 l = 0 r = 0
A= 1073741824 left = 26 right = 4
 l = 0 r = 0
A= 1073741824 left = 25 right = 5
 l = 0 r = 0
A= 1073741824 left = 24 right = 6
 l = 0 r = 0
A= 1073741824 left = 23 right = 7
 l = 0 r = 0
A= 1073741824 left = 22 right = 8
 l = 0 r = 0
A= 1073741824 left = 21 right = 9
 l = 0 r = 0
A= 1073741824 left = 20 right = 10
 l = 0 r = 0
A= 1073741824 left = 19 right = 11
 l = 0 r = 0
A= 1073741824 left = 18 right = 12
 l = 0 r = 0
A= 1073741824 left = 17 right = 13
 l = 0 r = 0
A= 1073741824 left = 16 right = 14
 l = 0 r = 0
rev= 1073741824