下面是使用它的一个例子
boundsCentre = new Vector3D(stageWidth >> 1,stageHeight >> 1, 200.0);
谢谢。
发布于 2011-03-08 17:41:52
>>
是正确的位移位运算符。a >> b
会将a
的位值b
位向右移位。
如果为a = 8
和b = 2
,则a >> b
将生成2
,因为a
由1000
表示,移位2位是10
,后者以二进制形式表示2
。
更重要的是,因为ActionScript是一种ECMAScript变体,所以Number
类型的值将从64位表示转换为32位表示,然后进行移位。此外,(AFAIK,似乎在参考中找不到它)位移位溢出在ECMAScript中是未定义的。
stageWidth >> 1
本质上是将stageWidth除以2,这意味着它是到舞台中心的向量。在其他语言中,x >> 1
是一种更快的除以2的方法,但在ECMAScript中,没有显著的性能变化,并且存在歧义的可能性。因此,最好将所需的效果编码为:
stageWidth / 2
这样就更容易理解了。
发布于 2011-03-08 17:36:17
这是一个逐位右移位。请参阅this page
按位右移位本质上是每个移位位置的整数除以2。X >> 2除以4,x >> 3除以8,依此类推。相反,<<是一个左移,它是整数乘以2。
考虑这个例子,数字42是二进制的
00101010
右移一个位置会导致如下结果:
00010101
也就是21。
https://stackoverflow.com/questions/5236101
复制