Why does (x-1) toggle all the bits from the rightmost set bit of x?

后端 未结 2 1545
攒了一身酷
攒了一身酷 2021-01-27 15:18

Why does this property hold true?

say the kth bit from right side is the first set bit in number \'x\'. (x-1) will toggle every bit upto kth bit from r

2条回答
  •  逝去的感伤
    2021-01-27 15:45

    Let's do a hand subtraction

      xxx100...00
    - xxx000...01
    ─────────────
      xxx011...11
    

    x represents bits that we don't care

    Starting from the right, 10 - 1 = 1, borrowing 1 from the next column

    Then the next one is 0 - 0, minus the borrow, which also results in 0 - 1 = 1 borrows 1. This sequence continues until the bit in subtrahend is 1, now we have 1 - 0 - borrow = 1 - 1 = 0

    As the result, all the bits up to the rightmost set bit will be inverted

提交回复
热议问题