#include <stdio.h> #include <stdint.h> uint8_t clear_bit(uint8_t reg, uint8_t pos) { // Your code here return reg & ~(1<<pos); } int main() { uint8_t reg, pos; scanf("%hhu %hhu", ®, &pos); uint8_t result = clear_bit(reg, pos); printf("%u", result); return 0; }
1️⃣ Create mask for target bit
1 << pos
This produces a number where only that bit is 1.
1
Example (pos = 3):
00001000
2️⃣ Invert the mask
~(1 << pos)
Now it becomes:
11110111
Notice:
3️⃣ Use AND to clear the bit
reg & ~(1 << pos)
Why AND?
x & 0 = 0
x & 1 = x
return reg & ~(1 << pos);
✔ Clears only the specified bit✔ Other bits remain unchanged✔ Constant time✔ Embedded-safe✔ Interview-ready
Test Cases
Test Results
Input
7 0
Expected Output
6