题解 | #不用加减乘除做加法#
不用加减乘除做加法
https://www.nowcoder.com/practice/59ac416b4b944300b617d4f7f111b215
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param num1 int整型 * @param num2 int整型 * @return int整型 */ //思路: //首先理解相关知识: //1、按位与&,有0得0, //2、按位异或^,相同为0,相异为1 //3、按位异或可以算出没有进位的相加结果sum //4、按位与,算出进位结果,进位结果左移一位得forward, //5、然后将sum和forward重复上面的步骤3,4。直到forward中没有进位,即forward=0 int Add(int num1, int num2 ) { // write code here int sum, forward; do { sum = num1 ^ num2; //17(10001),5(00101),sum = 10111 forward = (num1 & num2)<<1; num1 = sum; num2 = forward; }while (num2 != 0); return num1; }