版权声明:原创文章转载请注明来源 https://blog.csdn.net/LQZ8888/article/details/90510237
求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
/*
函数实现
*/
public function index()
{
return $this->sum(26,70);
}
public function sum($n,$m)
{
$arr = [$n,$m];
$str = array_sum($arr);
return $str;
}
或者 位运算 二进制
public function day1(){
echo $this->cplus(11, 13);
}
/*
*
* 13 的二进制 1 1 0 1 -----a 13
11 的二进制 1 0 1 1 -----b 11
(a&b) <<1 -> 1 0 0 1 0 -----d 18
a^b -> 0 1 1 0 -----e 6
(d&e) <<1 -> 0 0 1 0 0 ------f 4
d^e -> 1 0 1 0 0 -----g 20
(f&g) <<1 -> 0 1 0 0 0 ------h 8
f^g -> 1 0 0 0 0 ------i 16
(h&i) <<1 -> 0 0 0 0 0 ------h 0 ---- --------退出循环
h^i -> 1 1 0 0 0 ------i 24
*/
function cplus($num1, $num2) {
if ($num2 == 0) {
return $num1;
}
$sum = $num1 ^ $num2;
$carry = ($num1 & $num2) << 1;
return $this->cplus($sum, $carry);
}