为什么许多人使用左移<<而不是乘法

时间:2017-12-04 17:47:05

标签: c++

在许多代码中,人们使用左移来完成乘法运算。例如,3 * i,有些人喜欢使用i<< 1 + i,使用左移是否比普通的一个好处。

1 个答案:

答案 0 :(得分:4)

跳到我脑海中的一个原因是要指出正在执行按位操作;与使用hex(意见问题)相比,使用这种符号表示代码可以变得更清晰,意图更清晰。

例如 - 要指出工程师可能会设置第3位

uint32 foo = 1 << 3;

请注意,在这种情况下,编译器将完全优化它并替换为0x08的赋值;但是设置第3位的意图非常明确。

这在嵌入式编程,加密和其他一些特定的错误中有很多用处,我不介意。

它不适用于性能优化,因为可以期望编译器优化乘以2到移位它不会更快;无论如何,你不太可能注意到大多数应用程序的收益。

但是,3*i替换为i << 1+i的示例很差,因为它们不是同一个操作。