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?

  • Lucy :3@feddit.org
    link
    fedilink
    arrow-up
    5
    ·
    edit-2
    18 hours ago
    0d10 = 0b00001010
    0d04 = 0b00000100
    
    1010   |
    0100
    ------
    1110
    
    0b00001110 = 0d14
    
    
    0d25 = 0b00011001
    0d10 = 0b00001010
    
    11001   |
    01010
    -------
    11011
    
    0b00011011 = 0d27
    

    If an int is only x bytes long, but y bytes are needed for an action, it’s just padded with 0’s to the left. So 0b110 = 0b0110 = 0b00000110. Usually you will use either 8, 16, 32 or 64 digits/bits (char, short, int and long respectively, and 1, 2, 4 and 8 bytes long, 1 byte = 8 bits. So you’ll usually align it with bytes.) However, for calculating like this removing trailing zeroes can make it more tidy, and sometimes 4 or 2 bits are used too. And bools technically only use 1 bit.

    • milon@lemm.eeOP
      link
      fedilink
      arrow-up
      2
      ·
      18 hours ago

      Thank you. Not sure why in the link the arithmetic in green results in 7.