为了账号安全,请及时绑定邮箱和手机立即绑定

c++ 用位运算来计算

c++ 用位运算来计算

C++
慕码人8056858 2018-07-29 11:00:46
输入两个数字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;


查看完整回答
反对 回复 2018-09-01
  • 1 回答
  • 0 关注
  • 747 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信