#include <stdio.h> #include <stdint.h> uint8_t reverse_bits(uint8_t val) { /* * 1234 5678 -> 5678 1234 * 5678 1234 -> 7856 3412 * 7856 3412 -> 8765 4321 */ // swap the first 4 with last 4 bits val = ((0xF0 & val) >> 4) | ((0x0F & val) << 4); // swap top two of 4 bits with bottom two of 4 bits val = ((0xCC & val) >> 2) | ((0x33 & val) << 2); // swap each pair of bits val = ((0xAA & val) >> 1) | ((0x55 & val) << 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