Bit Reversal in an 8-bit Value

Code

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

uint8_t swap_bit(uint8_t val, uint8_t pos1, uint8_t pos2){
    uint8_t bit_pos1 = (val>>pos1) & 1;
    uint8_t bit_pos2 = (val>>pos2) & 1;
    uint8_t clear_mask = ~(1<<pos1 | 1<<pos2);
    val = val & clear_mask;
    val = (val | bit_pos1<<pos2) | bit_pos2<<pos1;
    return val;
}

uint8_t reverse_bits(uint8_t val) {
    val = swap_bit(val, 0, 7);
    val = swap_bit(val, 1, 6);
    val = swap_bit(val, 2, 5);
    val = swap_bit(val, 3, 4);
    return val;
}

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

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

Solving Approach

 

 

 

Upvote
Downvote
Loading...

Input

26

Expected Output

88