提问人:GalacticLux 提问时间:4/4/2023 更新时间:4/5/2023 访问量:30
PHP 中没有 * 和 / 的乘法
Multiplacation in PHP without * and /
问:
所以我正在尝试在不使用除法或减法的情况下制作一个乘法应用程序。为此,我使用埃塞俄比亚乘法,它使用 << 和 >>。由于某种原因,代码不会将 Num2 向右移动。
我真的不知道如何修复它,但如果有人可以提供帮助,这里是代码。
<?php
function ethMul($num1, $num2){
$count = 0;
while($num2 > 1){
#number stuff
$num1 << 1;
$num2 >> 1;
#drops decimal
$num2 = (int) $num2;
echo $num2;
#uses EM to take num5 and make it equal to $num3>>1 and then make num6 equal to $num5<<1;
$num3 = $num1 >> 1;
$num4 = $num3 << 1;
#if statement for adding to the
if ($num4 = $num1){
$count += $num1;
}
}
return $count;
}
echo ethMul(17, 12);
答:
0赞
jspit
4/5/2023
#1
这是将两个正整数相乘的简单副本。$fac 2 >>= 1;是 $fac 2 = $fac 2 >> 1 的简化表示法;
function mul($fac1,$fac2){
for($prod = 0;$fac2;$fac2 >>= 1){
if($fac2 & 1) $prod += $fac1;
$fac1 <<= 1;
}
return $prod;
}
echo mul(7,6); //42
评论
$num2 >> 1
不修改 。将结果分配回 。另外,位移操作的结果已经是一个整数,你不需要强制转换它。$num2
$num2