這個題目能夠讓咱們迴歸到小學,想一想加法的豎式是怎麼寫的,哈哈,若是當時你不是那個豎式寫錯了,是否是就不在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; } }