Advertisement
mfrankic

A

Apr 20th, 2019
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.02 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdint.h>
  3.  
  4. #ifndef DEBUG
  5. #define DEBUG(...) printf(__VA_ARGS__)
  6. #endif
  7.  
  8. void print_binary(uint32_t b, int n) {
  9.   uint32_t p = (1 << (n - 1));
  10.  
  11.   while(p != 0) {
  12.     printf("%d",b & p ? 1 : 0);
  13.     p >>= 1;
  14.   }
  15.   printf("\n");
  16. }
  17.  
  18. uint32_t create_bitmask(int n) {
  19.   uint32_t mask = 0;
  20.  
  21.   for (int i = 0; i < n; i++) {
  22.     mask <<= 1;
  23.     mask |= 1;
  24.   }
  25.  
  26.   return mask;
  27. }
  28.  
  29. uint32_t reverse_binary(uint32_t input, int n) {
  30.   uint32_t output = 0;
  31.  
  32.   for (int i = 0; i < n; i++) {
  33.     output <<= 1;
  34.     output |= input & 0x01;
  35.     input >>= 1;
  36.   }
  37.  
  38.   return output;
  39. }
  40.  
  41. int main() {
  42.   uint32_t bin = 0;
  43.   int n, k;
  44.  
  45.   scanf("%d %d", &n, &k);
  46.  
  47.   uint32_t half_mask = create_bitmask((n >> 1));
  48.   uint32_t mask = create_bitmask(n);
  49.  
  50.   // Implementirajte modalitet rada sukladno uputama
  51.   for (int i = 0; i < k - 1; ++i)
  52.   {
  53.     bin >>= 1;
  54.     if (bin == 0){
  55.       bin = 1 << (n/2 - 1);
  56.     }
  57.   }
  58.   bin |= reverse_binary(bin, n);
  59.   print_binary(bin, n);
  60.   return 0;
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement