输入两个数字a和b用位运算输出a-b的值有多组直到输入EOF...
1 回答
幕布斯7119047
TA贡献1794条经验 获得超8个赞
模拟二进制运算。
加法运算:将一个整数用二进制表示,其加法运算就是:相异(^)时,本位为1,进位为0;同为1时本位为0,进位为1;同为0时,本位进位均为0。所以,不计进位的和为sum = a^b,进位就是arr = a&b,(与sum相加时先左移一位,因为这是进位)。完成加法直到进位为0.
int add(int a, int b) //递归形式
{
if(b==0) //递归结束条件:如果右加数为0,即不再有进位了,则结束。
return a;
int s = a^b;
int c = (a&b)<<1; //进位左移1位,达到进位的目的。
return add(s, c); //再把'和'和'进位'相加。递归实现。
}
int add(int a, int b) //非递归形式
{
int s, c;
while(b != 0)
{
s = a^b;
c = (a&b)<<1;
a = s;
b = c;
}
return a;
- 1 回答
- 0 关注
- 747 浏览
添加回答
举报
0/150
提交
取消