题解 | #二进制中1的个数#
不用加减乘除做加法
http://www.nowcoder.com/practice/59ac416b4b944300b617d4f7f111b215
记录题解。
两个二进制的相加结果是用一个异或门实现的;
两个二进制的进位结果是用一个与门来实现的。
public class Solution { public int Add(int num1,int num2) { int result = 0; int carry = 0; do{ result = num1 ^ num2; //不带进位的加法 carry = (num1 & num2) << 1; //进位 num1 = result; num2 = carry; }while(carry != 0); // 进位不为0则继续执行加法处理进位 return result; } }