#include <stdio.h>
#include <stdint.h>
// Define bitwise macros here
// I am 'assuming' I get to turn on optimizations
// I far prefer the use of inline vs a macro
// Also, only 'suggesting' as I trust the compiler gods...
static inline void setBit(uint8_t *reg, uint16_t bit);
static inline void clearBit(uint8_t *reg, uint16_t bit);
static inline void toggleBit(uint8_t *reg, uint16_t bit);
uint8_t modify_register(uint8_t reg) {
// Apply operations in order
setBit(®, 2);
setBit(®, 7);
clearBit(®, 3);
toggleBit(®, 5);
return reg;
}
int main() {
uint8_t reg;
scanf("%hhu", ®);
printf("%u", modify_register(reg));
return 0;
}
static inline void setBit(uint8_t *reg, uint16_t bit)
{
if (reg)
{
*reg |= (1U << bit);
}
}
static inline void clearBit(uint8_t *reg, uint16_t bit)
{
if (reg)
{
*reg &= ~(1U << bit);
}
}
static inline void toggleBit(uint8_t *reg, uint16_t bit)
{
if (reg)
{
*reg ^= (1U << bit);
}
}
Input
0
Expected Output
164