![]() |
1
8
这有几个原因。 首先,乘法和除法在某些情况下实际上更快。 当我们使用左移,右移… 即二进制数字1为00000001 左移到00000010,现在是2……即1×2 将它移动两次,乘以/除以4,3次8,4次16,等等… 它没有被过度频繁地使用,但是在像C/C++的物理引擎端口的情况下,处理大量的数据,或者一些3D引擎,我们会看到移位作为原始代码的一个补充,或者仅仅是为了速度。 (例如,在一些J2ME移动Java游戏中也可以看到它,其中浮点单元是不可用的,即将一个值左移10位,剩下的10位就像一个小数点。然后在绘制到屏幕位置时将其移回实际值,以牺牲整体可能大小为代价) 上面提到的另一个用途是用于快速数学.floor();—但是有一个关键的不同之处。 几个月前,我用box2d做了一些基准测试,发现它快了数百倍——奇怪的是,我假设这两个转换都是本地处理的。
当舍入负数时,
即,数字(浮点数)上的<<0将沿0的方向四舍五入。 |
![]() |
2
8
数到整数转换 在AS3中使用int(x)的速度快10%。不过,位版本在AS2中工作得更好。 x= int(1.232) /等于: x=1.232>>0; 最佳解释: http://lab.polygonal.de/2007/05/10/bitwise-gems-fast-integer-math/das |
![]() |
3
4
这可能是一个不用调用math.floor()的开销就可以去掉小数的技巧,因为即使使用数字作为输入,也会得到一个整数。 我不确定这是如何将性能方面与执行(更常见的)强制转换为int(x)进行比较的。 |
![]() |
4
3
有时,为了完整性,您会在枚举中看到这一点,也就是说。
等等。如果您在代码中遇到这种情况,我希望它只是实际需要进行更多转换(测试、更改需求)时的一些遗留问题。当然,也就是说,除非这个操作符不是AS3中的移位操作符。例如,在C++中,它也被用作输入流运算符(你知道,因为你正在把一些输入转换成一些变量)。叹气)。 |
|
John Proctor · C中位的掩蔽范围 7 年前 |
![]() |
Jakey · C枚举定义中的按位移位有什么作用? 7 年前 |
![]() |
Areg Sarvazyan · 从无符号int中提取位的函数 7 年前 |
![]() |
goodvibration · 实施安全左移 7 年前 |
![]() |
AesSedai101 · Kotlin'shl'不工作 7 年前 |
![]() |
Sam Hammamy · 如何在位运算中选择正确的左移位? 7 年前 |