#include <stdio.h>
#include <stdint.h>
// Define bitwise macros here
//uint8_t Operation1 = 0b10000100;
// #define Op1 uint8_t(132u);
// #define Op2 uint8_t(8u);
// #define Op3 uint8_t(32u);
// uint8_t modify_register(uint8_t reg) {
// // Apply operations in order
// reg |= Op1;
// reg &= ~Op2;
// reg ^= Op3;
// return reg;
// }
#define SET_BIT(r, b) ((r) |= (1 << (b)))
#define CLEAR_BIT(r, b) ((r) &= ~(1 << (b)))
#define TOGGLE_BIT(r, b) ((r) ^= (1 << (b))) //This is the best approach.
uint8_t modify_register(uint8_t reg) {
// Apply operations in order
SET_BIT(reg,2);
SET_BIT(reg,7);
CLEAR_BIT(reg, 3);
TOGGLE_BIT(reg, 5);
return reg;
}
int main() {
uint8_t reg;
scanf("%hhu", ®);
printf("%u", modify_register(reg));
return 0;
}
Expected Output
164