使用位运算实现加减乘除

经常看到类似”不使用XXX符号的前提下,实现加、减、乘、除“?第一次遇见的同学可能会懵,如果你记起来一个叫位运算的东西就会豁然开朗了。

算法概述

加法:比如5+6。小学的时候数学老师告诉我们的是,先求不算进位的值,也就是1,然后再将进位结果(这里是1)加入,直到进位为0。使用位运算也是同样的道理。只不过我们对于进位和不进位的结果的产生感到陌生而已。

位运算中两个数相加的不进位结果:a^b,进位结果a&b;之后取a&b左移一位后的结果和a^b相加,如此一直加下去,直到进位为0,此时就能得到结果。

减法:减法其实也是属于加法,因为a-b=a+(-b);于是首先需要将b取相反数,位运算中只要将b位取反后加上1即可,b=~b加1。

乘法:乘法就是多次的加法而已,这里不再累述。

除法:就是多次的减法,直到被除数小于等于0。

代码示例

public class Solution3 {

    public int add(int a, int b) {
        int sum = a;
        int arr = b;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值