bitwise_operators.gd 821 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. enum Flags {
  2. FIRE = 1 << 1,
  3. ICE = 1 << 2,
  4. SLIPPERY = 1 << 3,
  5. STICKY = 1 << 4,
  6. NONSOLID = 1 << 5,
  7. ALL = FIRE | ICE | SLIPPERY | STICKY | NONSOLID,
  8. }
  9. func test():
  10. var flags = Flags.FIRE | Flags.SLIPPERY
  11. print(flags)
  12. flags = Flags.FIRE & Flags.SLIPPERY
  13. print(flags)
  14. flags = Flags.FIRE ^ Flags.SLIPPERY
  15. print(flags)
  16. flags = Flags.ALL & (Flags.FIRE | Flags.ICE)
  17. print(flags)
  18. flags = (Flags.ALL & Flags.FIRE) | Flags.ICE
  19. print(flags)
  20. flags = Flags.ALL & Flags.FIRE | Flags.ICE
  21. print(flags)
  22. # Enum value must be casted to an integer. Otherwise, a parser error is emitted.
  23. flags &= int(Flags.ICE)
  24. print(flags)
  25. flags ^= int(Flags.ICE)
  26. print(flags)
  27. flags |= int(Flags.STICKY | Flags.SLIPPERY)
  28. print(flags)
  29. print()
  30. var num = 2 << 4
  31. print(num)
  32. num <<= 2
  33. print(num)
  34. num >>= 2
  35. print(num)