在许多代码中,人们使用左移来完成乘法运算。例如,3 * i,有些人喜欢使用i<< 1 + i,使用左移是否比普通的一个好处。
答案 0 :(得分:4)
跳到我脑海中的一个原因是要指出正在执行按位操作;与使用hex(意见问题)相比,使用这种符号表示代码可以变得更清晰,意图更清晰。
例如 - 要指出工程师可能会设置第3位
uint32 foo = 1 << 3;
请注意,在这种情况下,编译器将完全优化它并替换为0x08的赋值;但是设置第3位的意图非常明确。
这在嵌入式编程,加密和其他一些特定的错误中有很多用处,我不介意。
它不适用于性能优化,因为可以期望编译器优化乘以2到移位它不会更快;无论如何,你不太可能注意到大多数应用程序的收益。
但是,3*i
替换为i << 1+i
的示例很差,因为它们不是同一个操作。