17. Rotate Left in an 8-bit Register

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

uint8_t rotate_left(uint8_t reg, uint8_t n) {
    // Mask to ensure rotation within 8 bits
    n %= 8;

    // Perform circular left rotation
    return (reg << n) | (reg >> (8 - n));
}

int main() {
    uint8_t reg, n;
    scanf("%hhu %hhu", &reg, &n);
    printf("%u", rotate_left(reg, n));
    return 0;
}

 

  • Left shift the register by n bits.
  • Right shift it by (8 - n) to move the wrapped-around bits.
  • OR the two to get the final rotated result.

 

Loading...

Input

176 1

Expected Output

97