1)使用位运算,sum1=a^b 相当于不进位的加法,因为0+1=1.1+0=1.1+1=0(因为不进位)0+0=0 正好是或运算
2)sum2=(a&b)<<1,相当于算进位的数,因为只有1+1时进位
3)结果就是sum1+sum2,当然如果这个加法还需要进位就执行第四步
4)重复上面的过程一直到进位数(a&b)<<1为零,也就是不需要进位为止
#include<iostream> #include<stdio.h> using namespace std; int add(int a,int b){ if(b==0)//当进位数为零时,a就是结果了 return a; int num1,num2; num1=a^b; num2=(a&b)<<1; add(num1,num2); } int main(){ int a,b; while(scanf("%d%d",&a,&b)){ cout<<add(a,b)<<endl; } }
不用+、-、×、÷数字运算符做加法
时间: 2024-10-19 03:05:05