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
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值