【发布时间】:2023-04-07 09:45:01
【问题描述】:
这个问题非常简单。我得到了一个数字,我想将它与 3.5 相乘,即得到数字 n=3.5n。我不允许使用任何运算符,例如 +,-,*,/,% 等等。但是我可以使用位运算符。
我自己尝试过,但它没有给出精确的结果,就像我的程序给出的输出 17 for 5* 3.5 这显然是错误的。如何修改我的程序以显示正确的结果。 p>
#include<bits/stdc++.h>
using namespace std;
double Multiply(int n)
{
double ans=((n>>1)+ n + (n<<1));
return ans;
}
int main()
{
int n; // Enter the number you want to multiply with 3.5
cin>>n;
double ans=Multiply(n);
cout<<ans<<"\n";
return 0;
}
【问题讨论】:
-
即使你的函数有效,它也使用
+,你说这不是本次作业的一部分? -
哦,是的。也许你可以告诉我怎么做。
-
也许投反对票的人想告诉我我的问题有什么问题,以便我改进:)
-
您确定该任务是针对浮点值执行此操作的吗?这真的不容易——至少对于任意范围的浮点数(例如 0.001 * 3.5 和 1E30 * 3.5)来说不是这样,尽管使用简单的逻辑完全可以做到这一点,因为这是微处理器可以使用的全部内容。跨度>
-
如果答案是整数值,那么可以使用按位运算很好地解决。
标签: c++ bit-manipulation bitwise-operators