原创 关于移位运算

2008-4-9 15:23 3072 12 12 分类: FPGA/CPLD
移位(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条评论)

登录后参与讨论
我要评论
0
12
关闭 站长推荐上一条 /2 下一条