#include <stdio.h> #include <stdint.h> uint32_t rotate_right(uint32_t reg, uint8_t n) { int arr[32],num=0; for(int i=0;i<32;i++) { arr[i]=(reg>>i)&1; } while(n) { int temp=arr[0]; for(int i=1;i<=31;i++) { arr[i-1]=arr[i]; } arr[31]=temp; n--; } for(int i=31;i>=0;i--) { if(arr[i]==1) { num |=1<<i; } else { num &=~(1<<i); } } return num; } int main() { uint32_t reg; uint8_t n; scanf("%u %hhu", ®, &n); printf("%u", rotate_right(reg, n)); return 0; }
Test Cases
Test Results
Input
2147483648 1
Expected Output
1073741824