浮点mul(* 10)加上和移位

时间:2012-03-08 04:28:16

标签: c++ c

我的问题很简单:我可以通过2 * 10进行(2 << 2) + 2移位和添加,但我不知道如何通过移位和添加获得2.2 * 10。任何建议将非常感谢。

-khan_gl

3 个答案:

答案 0 :(得分:2)

这有效:

2.2 + 2.2 + 2.2 + 2.2 + 2.2 + 2.2 + 2.2 + 2.2 + 2.2 + 2.2 + (0 << 1)

除了开玩笑,你不能因为你不能在C ++ / C中移动浮点数。好吧,你可以(通过令人讨厌的打字),但是你会遇到未定义的行为。

此外,这样做没有意义。如果你正在进行乘法,那么只需使用*。编译器会将其转换为最有效的形式。

答案 1 :(得分:1)

如果我理解你的问题,

2.2 = 2 + 2/10

因此,2.2 * 10 = 2 * 10 + 2 * 10/10 = 2 * 10 + 2 = 22.

你可以用移位和减法进行除法。

答案 2 :(得分:1)

在现代CPU上,浮点数以“IEEE 754”格式表示。

IEEE 754浮点运算的核心是位移和整数算术。如果您有耐心,可以在C中编写一个简单的IEEE 754 ALU实现。您可能会发现这个主题很有趣: