I know I can use bit shifting but this is more readable (and easier :?)
flags :| (2 Shl (i + 1) )' flags :+ (2 ^ (i + 1) )
Anyone have any ideas why it outputs this
Because ^ and Exp() are floating point operations.By the way you should never mix regular algebra with boolean algebra. They aren't directly interchangeable.