#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; }
Test Cases
Test Results
Input
26
Expected Output
88