albibacsi

reverse binary

Apr 27th, 2016
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.73 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int reversebinary(int n){
  5.    int i, bit, skip=1;
  6.    int bits=31, bits_to_skip=bits;
  7.    int result=0;
  8.  
  9.    for(i=bits; i>=0; i--){
  10.       bit = n & (1 << i);
  11.       if(bit && skip == 1){
  12.          skip = 0;
  13.          bits_to_skip = i;
  14.       }
  15.  
  16.       if(skip == 0 && bit) result |= 1 << (bits_to_skip-i);
  17.    }
  18.  
  19.    return result;
  20. }
  21.  
  22. int main(int argc, char **argv){
  23.    int n=0;
  24.  
  25.    if (argc < 2){
  26.       printf("usage: %s <number>\n", argv[0]);
  27.       return -1;
  28.    }
  29.  
  30.    n = atoi(argv[1]);
  31.  
  32.    if(n < 1 || n > 1000000000){
  33.       printf("invalid number: %s, it must be 1 ≤ n ≤ 1000000000\n", argv[1]);
  34.       return -1;
  35.    }
  36.  
  37.    printf("%d\n", reversebinary(n));
  38.  
  39.    return 0;
  40. }
Advertisement
Add Comment
Please, Sign In to add comment