Rih*_*rds 7 actionscript-3 bitwise-operators
有没有直接的方法如何使用Actionscript 3中的按位运算将负数转为正数?我只是觉得我已经读过某个地方,它可能比使用Math.abs()或乘以更快-1.或者我错了,经过一天的学习字节和按位操作后,这是一个梦想?
我看到的是,按位NOT几乎可以解决问题:
// outputs: 449
trace( ~(-450) );
Run Code Online (Sandbox Code Playgroud)
如果有人发现这个问题并且感兴趣 - 在500万次迭代~(x) + 1中比50%快Math.abs(x).
如果使用了两个补码(通常是这种情况),否定就是补码,然后加 1:
-x == ~x + 1
Run Code Online (Sandbox Code Playgroud)
它是否更快取决于编译器执行的优化。如有疑问,请进行测试。