【发布时间】:2019-12-15 16:08:46
【问题描述】:
我在学习 C 时只是在学习一些基本的东西。我遇到了一个问题,即不使用 * 运算符将数字乘以 7。基本上是这样的
(x << 3) - x;
现在我知道了基本的位操作操作,但是我不知道如何在不使用 * 运算符的情况下将一个数字乘以任何其他奇数?有没有通用的算法?
【问题讨论】:
-
那是 (8*x)-x 或 IOW 7x
-
请注意,大多数编译器已经优化了这样的事情。即,将 15*x 变成 ((x
-
代数 :) - (x
-
只需使用
*运算符;这就是它的用途。这几乎是this question 的副本。请注意,(x<<3) - x可能会溢出x的某些值,而更简单、更清晰的x * 7不会溢出。 -
相关Java only在此重复。
标签: java c++ c bit-manipulation