Bitwise '&' operator

前端 未结 6 969
慢半拍i
慢半拍i 2020-11-28 14:43

I am lacking some basic understanding in bitwise \'&\' operator.

5 = 101
4 = 100

So why the output of the below if conditi

相关标签:
6条回答
  • 2020-11-28 15:08

    5 is 101.

    4 is 100.

    5 & 4 is not 0:

    101 
    100 &
    ↓↓↓
    100
    

    Problem solved ✓


    Clarification:

    In C, every non-zero value satisfies the if condition. Meaning, if you write:

    if (-5) {
      if (100) {
         // reachable code
      }
    }
    

    Whereas:

    if (0) {
      destroyTheWorld(); // we are safe
    }
    
    0 讨论(0)
  • 2020-11-28 15:09

    It enters the if condition. Because after the & operation it returns non-zero value. In C, for all non-zero value it's like returning true.

    0 讨论(0)
  • 2020-11-28 15:15

    Because 0b100 & 0b101 equals 0b100 and the latter does not equal 0.

    0 讨论(0)
  • 2020-11-28 15:24

    Understanding bitwise operator truth tables is crucial. Consider the following, where A and B are inputs and Y is the output.

    & (Bitwise And) When inputs A and B are true, output is true; otherwise output is false

    A   B   Y
    ---------
    0 | 0 | 0
    0 | 1 | 0
    1 | 0 | 0
    1 | 1 | 1
    

    | (Bitwise Or) When A or B or both inputs are true output is true; otherwise output is false

    A   B   Y
    ---------
    0 | 0 | 0
    0 | 1 | 1
    1 | 0 | 1
    1 | 1 | 1
    

    ^ (Bitwise X-Or) When A and B are opposite states, output is true; otherwise output is false

    A   B   Y
    ---------
    0 | 0 | 0
    0 | 1 | 1
    1 | 0 | 1
    1 | 1 | 0
    

    ! (Bitwise Not) Output is the opposite state of the input

    A   Y
    -----
    0 | 1
    1 | 0
    

    Your Equation (5 & 4) == (0101 & 0100) == 0100 == 4 == true

      0101
    & 0100
    ------
      0100
    
    0 讨论(0)
  • 2020-11-28 15:28
    0b101 & 0b100 = 0b100
    

    or

    5&4 = 4
    

    and 4 is non-zero and prints Yes

    0 讨论(0)
  • 2020-11-28 15:31
    5 - 101
    4 - 100
    5&4 - 100
    

    It is true.

    0 讨论(0)
提交回复
热议问题