^的符号的作用
类似于按位加
1^0=1 -------------->1+0=1
1^1=0 ---------------->1+1=10 舍去高位
0^0=0 --------------->0+0=0
0^1=1 ----------------->0+1=1
1000
^ 1101
================
0101
&可以判断是否进位
1000
& 1101
------------------
1000
说明进位不等于0,所以需要左移一位
function(var a,var b)
while(b!=0){
var m = a^b;//先加 新a
var n = a&b;//再判断是否进位
b = n<<1;//不等于0,进行下轮加法 新b
a = m ;//这轮加的结果
}
return a;