移位(bit shifting)
移位只对整数运算起作用。通过移位进行2的整数次幂的乘除法要比直接进行乘法运算快很多(当然比除法运算更快),这是一个基本常识。
为了理解它的用法,考虑下面这几个公式:
x << y = x * 2 y
x >> y = x / 2 y
Andr LaMothe在他的《Tricks of the Game Programming Gurus》一书中大量的阐述了这方面的内容。在某些情况下,这种方法可以带来巨大的回报。思考下面的这段简化了的代码:
i* = 256;
与之对应的
i = i << 8;
在逻辑上它们完全相同。对于这个简单的例子,编译器很可能会自动将第一条语句转换为第二句,但是当你进行更复杂的计算时(比如i = i << 8 + i << 4等于i *= 272),编译器可能就无能为力了。
文章评论(0条评论)
登录后参与讨论