用位运算实现加法和乘法

加法器

如果你学过计算机组成原理,就肯定知道全加器的运算原理:通过异或运算来得到当前位的和,通过按位与运算得到下一位的进位,并把进位加进下一位的加数。根据这种思想可以写一个位运算实现的加法函数。

int Add(int x, int y)
{
	if (y == 0)
        return x;
	else
        return Add( x ^ y, (x & y) << 1);
}

乘法器

计算机内部实现乘法的原理是参考笔算乘法的,被乘数由低到高的每一位都与乘数相乘,在左移相应的位数(详细内容见《计算机组成原理》P40)。

int multiply(int a,int b)
{
	int stair,product,x,y;
	product=0;x=a;y=b;
	do{
		stair=(y&1)?x:0;
		product+=stair;
		y>>=1;x<<=1;
	} while(y);
	return product;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

碳烤猛犸象

不是缺钱,是为了尊重知识

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值