All submissions

Bit Reversal in an 8-bit Value

Code

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

uint8_t reverse_bits(uint8_t val) {
    uint8_t lsb, msb;
    uint8_t x;
    uint8_t lsb_mask, msb_mask;
    uint8_t i = 0;

    lsb_mask = 0x1;
    msb_mask = 0x80;

    while(lsb_mask < msb_mask)
    {
        lsb = 0;
        msb = 0;
        if(val & lsb_mask)
            lsb = 1;
        if(val & msb_mask)
            msb = 1;

        x = lsb ^ msb;

        val = val ^ (x << (7 - i));
        val = val ^ (x << i);
        i++;
        lsb_mask <<= 1;
        msb_mask >>= 1;
    }

    return val;
}

int main() {
    uint8_t val;
    scanf("%hhu", &val);

    uint8_t result = reverse_bits(val);
    printf("%u", result);
    return 0;
}

Solving Approach

 

 

 

Loading...

Input

26

Expected Output

88