All submissions

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 num[8];
    uint8_t ret=0;

    for(int i=0; i<8; i++) {
        num[7-i] = (reg & 1);
        reg >>= 1;
    }
    
    while(n--){
        uint8_t tmp = num[0];
        for(int i=0; i<7; i++) {
            num[i] = num[i+1];
        }
        num[7] = tmp;
    }

    // for(int i=0; i<8; i++) {
    //     printf("%d ", num[i]);
    // }
    // printf("\n");

    for(int i=0; i<8; i++) {
        if(num[i]) {
            ret |= (num[i] << (7-i));
        }
    }
    // printf("%d\n", ret);

    return ret;
}

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

Solving Approach

 

 

 

Loading...

Input

176 1

Expected Output

97