java 运算符实现_java无加减乘除运算符实现加法

/**java无加减乘除运算符实现加法

* @author 牵手无奈

*

*/

public class Add {

public static void main(String[] args) {

// TODO Auto-generated method stub

System.out.println(Integer.toBinaryString(1));

}

public static int add(int a,int b){

int result = 0;//初始化返回结果

int m = -2;//初始化置0的数,-2的二进制为11111111111111111111111111111110

int n = 1;// 初始化置1的数,1 的 二进制为00000000000000000000000000000001

byte c = 0;//表示上一次按位相加有没有进位,初始为0

while(b!=0 || a!=0){

byte p = (byte) (b&1);//把b的最低位取出来

b=b>>>1;//b算术右移一位

byte q = (byte)(a&1);//把a的最低位取出来

a = a>>>1;//a算术右移一位

if(((c&p&q)==1)){//当c,p,q都为1时

result = result | n;//表示在当前位置1,一开始表示将result右边第一位置1

c=1;//有进位产生

}else if((((c^p^q)==0)&&((c|p|q)==1))){//当c,p,q中有两个为1时,将当前位置0,因为1+1+0=0并产生进位

result = result & m;

c=1;

}else if((c|p|q)==1){//当c,p,q中只有1个为1时,将当前位置1,没有进位

result = result | n;

c=0;

}else{//当c,p,q中全部为0时,将当前位置0,没有进位

result = result & m;

c=0;

}

m = m<<1;

m = m|1;

n = n<<1;

}

if(c==0) return result;

else{//如果最后有进位,将当前位置1

result = result | n;

return result;

}

}

} java无加减乘除运算符实现加法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值