没有运算符的C ++计算器

时间:2017-12-25 05:52:17

标签: c++

我需要制作一个可以+, - ,*,/,%和^的C ++计算器。我根本不能在代码中使用+, - ,*,/和%。

#include<iostream>
using namespace std;
typedef long long ll;
ll add(ll a,ll b){ 
    if(b==0)return a;
    else return add(a^b,(a&b)<<1);
}
ll sub(ll a,ll b){ 
    if(b==0)return a;
    else return sub(a^b,((~a)&b)<<1);
}

这就是我所拥有的。我不知道如何编码乘法和除法部分。有什么帮助吗?

1 个答案:

答案 0 :(得分:0)

ll mul(ll a,ll b){ 
    if(b<0){
        b=add(~b,1);
        a=add(~a,1);
    }
    ll res=0;
    while(b>0){
        if(b&1)res=add(res,a);
        a<<=1;
        b>>=1;
    }
    return res;
}
ll div(ll a,ll b){
    ll c=0,op=0;
    if(a<0){
        a=add(~a,1);
        op^=1;
    }
    if(b<0){
        b=add(~b,1);
        op^=1;
    }
    if(b!=0){
        while(a>=b){
            a=sub(a,b);
            c=add(c,1);
        }
    }
    if(op)c=add(~c,1);
    return c;
}

遵循您的代码格式,我希望此解决方案有所帮助! 在这里,我使用加法和减法来进行乘法和除法,使用更多的按位运算符(&amp;,|,^,〜,&lt;&lt;&gt;&gt;&gt;)。您也可以参考cplusplus.com阅读更多相关信息。所以在这种情况下你可以看到乘法,我把位移到左边,所以有点像把那些地方移到十位等等。如果你需要进一步澄清,请随时寻求帮助。 :)