Clear the Bit in an 8-bit Register

Code

#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", &reg, &pos);
    uint8_t result = clear_bit(reg, pos);
    printf("%u", result);
    return 0;
}

Solving Approach

 

✅ Clear Bit — Compact Solution Approach

1️⃣ Create mask for target bit

1 << pos

This produces a number where only that bit is 1.

Example (pos = 3):

00001000

2️⃣ Invert the mask

~(1 << pos)

Now it becomes:

11110111

Notice:

  • All bits = 1
  • Target bit = 0

3️⃣ Use AND to clear the bit

reg & ~(1 << pos)

Why AND?

  • x & 0 = 0 → clears that bit
  • x & 1 = x → keeps other bits unchanged

💡 Final One-Line Logic

return reg & ~(1 << pos);

✔ Clears only the specified bit
✔ Other bits remain unchanged
✔ Constant time
✔ Embedded-safe
✔ Interview-ready

 

Upvote
Downvote
Loading...

Input

7 0

Expected Output

6