例如,可以使用位运算符来实现乘法和除法

i*2 = i<<1
i*3 = (i<<1) + i;
i*10 = (i<<3) + (i<<1)

等等

(i<<3)+(i<<1)乘以10比直接用i*10快吗?有没有什么输入不能用这种方法进行乘法或除法?

推荐答案

简单回答:不太可能.

详细回答:

底线是--不要花太多时间担心这件事.如果你想换档,那就换档吧.如果你想乘,那就乘吧.做语义上最清楚的事情--你的同事稍后会感谢你的.或者,更有可能的是,如果你不这样做,以后会诅咒你.

C++相关问答推荐

为什么macOS上的FIFA管道比匿名管道慢8倍?

char为16位且Short也为16位的c环境合法吗

为指针 struct 创建宏

位屏蔽对于无符号转换是强制的吗?

VS代码C/C++扩展intellisense无法检测环境特定函数'

C语言中字符数组声明中的标准

MISRA C:2012 11.3违规强制转换(FLOAT*)到(uint32_t*)

我无法让LLDB正确运行我的可执行文件

带有sigLongjMP中断I/O的异常处理程序

在编译时参数化类型定义

如何在不使用其他数组或字符串的情况下交换字符串中的两个单词?

理解C版宏(看起来像未声明的变量?)

是否定义了此函数的行为?

如何使这个While循环在新行上结束

C中的空指针是什么(_N)?

Linux Posix消息队列

这些表达式是否涉及 C 中定义的复合文字?

通过修改c中的合并排序对数组的偶数索引进行排序

如何修复数组数据与列标题未对齐的问题?

快速准确计算double的小数指数