<?php
function AddWithoutArithmetic($num1, $num2){
if(0 == $num2 ) return $num1;
$sum = $num1 ^ $num2; //异或运算
$carry = ($num1 & $num2) << 1; //对0加0、0加1、1加0而言,都不会产生进位,只有1加1时,会向前产生一个进位。因此两个数先做位与运算,然后再向左移动一位。
return AddWithoutArithmetic($sum, $carry);
}
echo AddWithoutArithmetic(1,2);
转载于:https://blog.51cto.com/hehe1987/1727121