Rotate Right in a 32-bit Register

Code

#include <stdio.h>
#include <stdint.h>

uint32_t rotate_right(uint32_t reg, uint8_t n) {
    // Ensure n is within the 0-31 range
    n = n % 32;
    
    // If n is 0, no rotation is needed
    if (n == 0) return reg;

    // Combine the right-shifted part and the wrapped-around left part
    return (reg >> n) | (reg << (32 - n));
}

int main() {
    uint32_t reg;
    uint8_t n;
    
    // Note: Using %u for uint32_t and %hhu for uint8_t
    if (scanf("%u %hhu", &reg, &n) == 2) {
        printf("%u\n", rotate_right(reg, n));
    }
    
    return 0;
}

Solving Approach

 

 

 

Upvote
Downvote
Loading...

Input

2147483648 1

Expected Output

1073741824