文章目录 1. 题目2. 思路(1) 位运算 3. 代码 1. 题目 2. 思路 (1) 位运算 两个二进制数做异或运算(^)可以得到相加后不产生进位的部分,做与运算(&)可以得到相加后产生进位的位下标,整体左移一位后可以得到相加后产生进位的部分,两个部分相加即为两数之和。以3+7,即0011+0111为例: 异或运算结果为0100,与运算结果为0011,由于产生进位,则与运算结果左移一位,变成0100+0110;异或运算结果为0010,与运算结果为0100,由于产生进位,则与运算结果左移一位,变成0010+1000;异或运算结果为1010,与运算结果为0000,不产生进位,可以直接返回异或运算结果1010,即10。 3. 代码 public class Test { public static void main(String[] args) { } } class Solution { public int add(int a, int b) { int xor = a ^ b; int and = a & b; if (and == 0) { return xor; } and <<= 1; return add(xor, and); } }