if coin == 25 | 10 | 5:

If I replace the ‘|’ with ‘or’ the code runs just fine. I’m not sure why I can’t use ‘|’ in the same statement.

Doing the following doesn’t work either:

if coin == 25 | coin == 10 | coin == 5:

I know bitwise operators can only be used with integers, but other then that is there another difference from logical operators?

  • ExtremeDullard@lemmy.sdf.org
    link
    fedilink
    arrow-up
    10
    ·
    edit-2
    1 day ago

    But what is an example of where I can use it?

    Aside from operations on bitfields, a bitwise operator can be useful in several “non bits” cases. For instance:

    value & 1 evaluates to 1 if value is odd (and will evaluate to True in an if statement)
    value >> 1 divides value by 2 (integer division)

    But usually bitwise operators are for when you want to manipulate bits in values. For instance:

    value | 5 returns value with bits 1 and 3 set to True
    value & 0xffff returns the 16 least-significant bits in value (usually you do this to make sure it will fit in 2 bytes in memory for example)
    value & (0xffff ^ 5) returns the lower 16 bits of value with bits 1 and 3 set to False

    Etc.

    • milon@lemm.eeOP
      link
      fedilink
      arrow-up
      5
      ·
      1 day ago

      Thank you for the reply. It seems bitwise operators are somewhat of an advanced concept that I may revisit down the road.

      • iltg
        link
        fedilink
        arrow-up
        8
        ·
        1 day ago

        honestly yes you’re probably not going to use them a lot, if at all, especially in python

        • sugar_in_your_tea
          link
          fedilink
          arrow-up
          3
          ·
          19 hours ago

          You might use them with sets:

          a = {1, 2, 3}
          b = {2, 3, 4}
          
          a | b  # {1, 2, 3, 4}
          a & b  # {2, 3}
          a ^ b  # {1, 4}
          a - b  # {1}
          b - a  # {4}
          
      • ExtremeDullard@lemmy.sdf.org
        link
        fedilink
        arrow-up
        2
        ·
        1 day ago

        They’re quite simple. Just convert the values to binary and apply the applicable truth tables. Just remember operator precedence when you use them, and in doubt, don’t trust your luck and apply parentheses generously 🙂

        • sugar_in_your_tea
          link
          fedilink
          arrow-up
          1
          ·
          19 hours ago

          And write generous unit tests so the next person doesn’t accidentally mess it up.