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