Rotate Left in an 8-bit Register

Code

#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", &reg, &n);
    printf("%u", rotate_left(reg, n));
    return 0;
}

Solving Approach

 

 

 

Upvote
Downvote
Loading...

Input

176 1

Expected Output

97