#include <stdio.h>
#include <stdint.h>
// Define bitwise macros here
#define SET_BIT(reg, bit) ((reg) |= (1U << (bit)))
#define CLEAR_BIT(reg, bit) ((reg) &= ~(1U << (bit)))
#define TOGGLE_BIT(reg, bit) ((reg) ^= (1U << (bit)))
uint8_t modify_register(uint8_t reg) {
SET_BIT(reg, 2); // Set bit 2
SET_BIT(reg, 7); // Set bit 7
CLEAR_BIT(reg, 3); // Clear bit 3
TOGGLE_BIT(reg, 5); // Toggle bit 5
return reg;
}
int main() {
uint8_t reg;
scanf("%hhu", ®);
printf("%u", modify_register(reg));
return 0;
}
|
) to ensure those bits are 1, regardless of their initial state.&
) with an inverted mask to force that bit to 0.^
) to flip its current state—0 becomes 1, and 1 becomes 0.Each operation uses a macro for readability and maintainability, making the code clean and hardware-friendly.
Input
0
Expected Output
164