您的位置:首页 > 编程语言 > Java开发

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

2015-08-19 23:24 519 查看
/**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无加减乘除运算符实现加法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: