MineOrpe

Untitled

Jan 9th, 2022
857
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.19 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define LEN 32
  5. #define BINARY_CONST 0x80000000
  6. int cycle_move_right(unsigned int x, unsigned int k) { // Циклический сдвиг байтов вправо
  7.     return (x >> k) | (x << (LEN - k));
  8. }
  9.  
  10. void bin(int number) // вывод числа в двоичном виде
  11. {
  12.     for (int i = 0; i < LEN; i++)
  13.     {
  14.         printf("%d", (number & BINARY_CONST) ? 1 : 0);
  15.         number <<= 1;
  16.     }
  17.     printf("\n");
  18. }
  19.  
  20. int cycle_move_left(unsigned int x, unsigned int k) { // Циклический сдвиг байтов влево
  21.     return (x << k) | (x >> (LEN - k));
  22. }
  23.  
  24.  
  25. int main() {
  26.     srand(time(0));
  27.     unsigned int A = rand();
  28.     int n = rand() % 4;
  29.     unsigned int resEven = 0; // четные биты числа
  30.     unsigned int resOdd = 0; // нечетные биты числа
  31.     printf("%X moved by %d\n", A, n);
  32.     bin(A);
  33.  
  34.     for (int i = LEN - 1; i >= 0; i--) {
  35.         if (i % 2)
  36.             resOdd |= A & (1 << i);
  37.         else
  38.             resEven |= A & (1 << i);
  39.     }
  40.     A = cycle_move_right(resEven, n) | cycle_move_left(resOdd, n);
  41.     printf("%X\n", A);
  42.     bin(A);
  43.  
  44.     return 0;
  45. }
Advertisement
Add Comment
Please, Sign In to add comment