可以使用位运算符来实现乘法和除法,例如
i*2 = i<<1
i*3 = (i<<1) + i;
i*10 = (i<<3) + (i<<1)
等等。
使用say (i<<3)+(i<<1)
真的更快吗?乘以 10 而不是使用 i*10
直接地?有没有哪种输入不能以这种方式相乘或除法?
最佳答案
简短回答:不太可能。
长答案: 您的编译器中有一个优化器,它知道如何在目标处理器架构的能力范围内尽可能快地进行乘法运算。您最好的选择是清楚地告诉编译器您的意图(即 i*2 而不是 i
底线——不要花很多时间担心这个。如果你的意思是转移,转移。如果你的意思是乘,乘。做语义上最清晰的事情——你的同事稍后会感谢你的。或者,如果你不这样做,以后更有可能诅咒你。
https://stackoverflow.com/questions/6357038/