Rotate Left in an 8-bit Register

Code

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

uint8_t rotate_left(uint8_t reg, uint8_t n) {

uint8_t temp = 0;

if(n==1)
{
    temp = reg&0x80;
    temp = temp>>7;
    reg = reg<<n;
     reg|=temp;
}
else if(n==2)
{
    temp = reg&0xC0;
    temp = temp>>6;
    reg = reg<<n;
    reg|=temp;
}
else if(n==3)
{
   temp = reg&0xE0;
   temp = temp>>5;
   reg = reg<<n;
   reg|=temp;
}
else if(n==4)
{
  temp =  reg&0xF0;
  temp = temp>>4;
  reg = reg<<n;
   reg|=temp;
}
else if(n==5)
{
  temp =reg&0xF8;
  temp = temp>>3;
  reg = reg<<n;
   reg|=temp;
}
else if(n==6)
{
   temp = reg&0XFC; 
   temp = temp>>2;
   reg = reg<<n;
    reg|=temp;
}
else if(n==7)
{
 temp =   reg&0xFE;
 temp = temp>>1;
 reg = reg<<n;
  reg|=temp;
}
else if(n==8)
{
  temp =  reg&0xFF;
  temp = temp>>0;
  reg = reg<<n;
   reg|=temp;
}


    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