这个题目能够让咱们回归到小学,想一想加法的竖式是怎么写的,哈哈,若是当时你不是那个竖式写错了,是否是就不在3班了?是否是就不会在这里写什么这这这..... 海绵宝宝,这就是人生啊。。html
回归题目:加法的竖式无非三步走,1、个位数相加;2、个位数进位(或者不进位);3、十位数相加。后面的都是同样了,不一一赘述。函数
可是,此题目不可用加减乘除,因此要借用二进制数的位运算符。固然目的也是和上面同样,相加(^)与进位(&配合<<1)!!spa
该题目必需要理解位运算符,可查看这里。code
第一步:相加不进位(^ 完成)htm
第二部:进位(&配合<<1)blog
第三部:判断(当在第二部得出进位的数是0的时候,就能够输出了)get
class Solution { public int Add(int num1, int num2) { // write code here while(num2!=0) { //不进位的二进制加法 int sum=num1^num2; //把位运算符&理解成逻辑运算与;<<为左移运算符,后面跟几就移动几位 int carray=(num1&num2)<<1; num1=sum; num2=carray; } return num1; } }