#include <stdio.h>
#include <stdint.h>
uint8_t reverse_bits(uint8_t val) {
// 1. Swap adjacent 4-bit blocks (nibbles)
// (val & 0xF0) >> 4 moves high to low; (val & 0x0F) << 4 moves low to high
val = ((val & 0xF0) >> 4) | ((val & 0x0F) << 4);
// 2. Swap adjacent 2-bit blocks
// 0xCC is 11001100, 0x33 is 00110011
val = ((val & 0xCC) >> 2) | ((val & 0x33) << 2);
// 3. Swap adjacent single bits
// 0xAA is 10101010, 0x55 is 01010101
val = ((val & 0xAA) >> 1) | ((val & 0x55) << 1);
return val;
}
int main() {
uint8_t val;
// Use %hhu to read an unsigned char (8-bit integer)
if (scanf("%hhu", &val) != 1) return 1;
uint8_t result = reverse_bits(val);
printf("%u", result);
return 0;
}
Input
26
Expected Output
88