题目:
给定两个32位int型整数,可正可负可0,实现四则运算。
注:位运算考虑溢出问题。
add加法实现:
public int Add(int num1,int num2) {
int sum=num1;
int carry=0;
while(num2!=0)
{
sum=num1^num2;
carry=(num1&num2)<<1;
num1=sum;
num2=carry;
}
return sum;
}
minus减法实现:
实现a-b,只要实现a+(-b)即可,根据二进制数在机器中的表达规则,得到b的相反数。
就是b的二进制数所有位(包括符号位)按位取反再加一即可。
public int negNum(int num)
{
return add(~num,1);
}
public int minus(int num1,int num2)
{
return add(num1,negNum(num2));
}
mutiply乘法和 divide除法
先不用管了。