Bit Reversal in an 8-bit Value

Code 

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

// uint8_t reverse_bits(uint8_t val) {
//     int left = 0; 
//     int right = 8 - 1; 

//     int bit1 = 0; 
//     int bit2 = 0; 
//     int mask = 1;
//     // printf("Mask: %X\n", mask);

//     while (left < right) {
    
//         bit1 = (val >> left) & (mask);
//         bit2 = (val >> right) & (mask);

//         val &= ~(mask << left); 
//         val &= ~(mask << right); 

//         val |= ((bit2) << left);
//         val |= ((bit1) << right); 

//         left++; 
//         right--; 
//     }

//     return val; 
// }


// Reverse bits in an 8-bit value
uint8_t reverse_bits(uint8_t val) {
    uint8_t result = 0;

    for (int i = 0; i < 8; i++) {
        // Shift result left to make room for next bit, doing this at the start is still 0
        result <<= 1;

        result |= (val & 1);

        // Shift input right to process next bit
        val >>= 1;
    }

    return result;
}


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