Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #define LEN 32
- #define BINARY_CONST 0x80000000
- int cycle_move_right(unsigned int x, unsigned int k) { // Циклический сдвиг байтов вправо
- return (x >> k) | (x << (LEN - k));
- }
- void bin(int number) // вывод числа в двоичном виде
- {
- for (int i = 0; i < LEN; i++)
- {
- printf("%d", (number & BINARY_CONST) ? 1 : 0);
- number <<= 1;
- }
- printf("\n");
- }
- int cycle_move_left(unsigned int x, unsigned int k) { // Циклический сдвиг байтов влево
- return (x << k) | (x >> (LEN - k));
- }
- int main() {
- srand(time(0));
- unsigned int A = rand();
- int n = rand() % 4;
- unsigned int resEven = 0; // четные биты числа
- unsigned int resOdd = 0; // нечетные биты числа
- printf("%X moved by %d\n", A, n);
- bin(A);
- for (int i = LEN - 1; i >= 0; i--) {
- if (i % 2)
- resOdd |= A & (1 << i);
- else
- resEven |= A & (1 << i);
- }
- A = cycle_move_right(resEven, n) | cycle_move_left(resOdd, n);
- printf("%X\n", A);
- bin(A);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment