Sie*_*tse 6 bit-shift actionscript-3 bitwise-operators
我在一些AS 3.0代码中遇到过这个问题:
(duration >> 0)
Run Code Online (Sandbox Code Playgroud)
持续时间是一个Number.我想我知道正确的右移是什么,但是什么是移位0位的意义呢?这在代码中发生了几次,我想了解它的作用.
小智 8
数字到整数转换使用int(x)在AS3中快10%.在AS2中,按位版仍然可以更好地工作.
x = int(1.232)
//等于:x = 1.232 >> 0;
最佳解释:http://lab.polygonal.de/2007/05/10/bitwise-gems-fast-integer-math/das
小智 8
这有几个原因..
首先,当我们使用左移,右移时,在某些情况下乘法和除法实际上更快......
即二进制中的数字1是00000001将其左移为00000010,现在为2 ..即1 x 2
将它移动两次乘以/除以4,3次为8次,4次为16次等等...
它不是经常使用,但在像C/C++的物理引擎端口,处理大量数据或某些3d引擎的情况下,我们会看到转变是原始代码的重演,或仅仅是速度.
(例如,您可能会在某些J2ME移动Java游戏中看到它,其中浮点单元不可用,即将值向左移10位,因此剩余的10位就像一种小数点...然后将其移回绘制到屏幕位置时的实际值,以可能的总体尺寸为代价)
提到的另一个用途是快速Math.floor(); - 但有一个关键的区别.几个月前我使用Box2D做了一些基准测试,发现它快了几百倍 - 因为我认为这两个转换都是原生处理的.
舍入负数时,
Math.floor(-7.6)= -8和(-7.6 << 0)= -7
即数字(浮点数)上的<< 0将在0方向上舍入.