How to turn off some bits while ignoring others using only bitwise operators

前端 未结 2 555
感动是毒
感动是毒 2021-02-04 02:55

I\'ve searched for this, but my results were unsatisfactory, probably because of how hard it is to word. I have one object, state, which is a byte that

相关标签:
2条回答
  • 2021-02-04 03:10

    If you just invert the bits of the parts, you can just AND it with the state

     void disableParts(byte parts) {
         byte invertOfParts = 0b11111111 - parts;
         state &= invertOfParts
     }
    
    0 讨论(0)
  • 2021-02-04 03:15

    What you need to do is invert the bits (bit-wise NOT) in partsToDisable so you end up with a mask where the 1's are the bits to be left alone and the 0's are the bits to be turned off. Then AND this mask with the state value.

    public void disableParts( byte partsToDisable)
    {
        state = state & (~partsToDisable);
    }
    
    0 讨论(0)
提交回复
热议问题