#include <stdio.h>
#include <stdint.h>
uint8_t rotate_left(uint8_t reg, uint8_t n) {
// Your code here
uint8_t temp, rev;
// printf("Initial reg = 0x%02X\n", reg);
// printf("n = %d\n\n", n);
temp = (1 << n) - 1;
// printf("Step 1: temp = (1 << n) - 1 = 0x%02X\n", temp);
temp = temp << (8 - n);
// printf("Step 2: temp << (8 - n) = 0x%02X\n", temp);
rev = temp & reg;
// printf("Step 3: rev = temp & reg = 0x%02X\n", rev);
reg = reg << n;
// printf("Step 4: reg >> n = 0x%02X\n", reg);
rev = rev >> (8 - n);
// printf("Step 5: rev >> (8 - n) = 0x%02X\n", rev);
reg = reg | rev;
// printf("Step 6: reg | rev = 0x%02X\n", reg);
// printf("\nFinal Result = 0x%02X\n", reg);
return reg;
}
int main() {
uint8_t reg, n;
scanf("%hhu %hhu", ®, &n);
printf("%u", rotate_left(reg, n));
return 0;
}
Input
176 1
Expected Output
97