Is there a direct way how to turn a negative number to positive using bitwise operations in Actionscript 3? I just think I’ve read somewhere that it is possible and faster than using Math.abs() or multiplying by -1. Or am I wrong and it was a dream after day long learning about bytes and bitwise operations?
What I saw was that bitwise NOT almost does the trick:
// outputs: 449
trace( ~(-450) );
If anyone find this question and is interested – in 5 million iterations ~(x) + 1 is 50% faster than Math.abs(x).
You need to add one after taking the bitwise negation. This is a property of two’s complement number system. It is not related to Actionscript (aside from the alleged performance difference).
So,
(~(-450)+1)gives450and
(~(450)+1)gives-450.As noted in comments, this answer is written in response to the question, to fix a minor issue in the question asker’s experiment. This answer is not an endorsement of this technique for general software development use.