PHP 使用位运算实现四则运算的代码(2)
⒋ 除法
同乘法类似,除法可以看作是被除数可以减去多少个除数。
<?php
require 'addition.php';
function divide($dividend, $divisor)
{
// 判断符号位
$flag = ($dividend ^ $divisor) < 0 ? false : true;
// 取得被除数符号位
$dividend_flag = $dividend < 0 ? false : true;
// 取绝对值
$dividend = $dividend < 0 ? add(~$dividend, 1) : $dividend;
$divisor = $divisor < 0 ? add(~$divisor, 1) : $divisor;
$quotient = 0;
$remainder = 0;
if ($dividend < $divisor) {
// 被除数小于除数的情况
$remainder = $dividend;
return 'quotient = ' . $quotient . ' remainder = ' . $remainder;
}
while ($dividend >= $divisor) {
$i = 0;
$mul_divisor = $divisor;
while ($dividend >= ($mul_divisor << 1)) {
$i ++;
$mul_divisor <<= 1;
}
$dividend -= $mul_divisor;
$quotient += 1 << $i;
}
$remainder = $dividend;
if (! $flag) {
$quotient = add(~ $quotient, 1);
}
if (! $dividend_flag) {
$remainder = add(~$remainder, 1);
}
return 'quotient = ' . $quotient . ' remainder = ' . $remainder;
}
以上。
需要指出的是,上面的代码在实现过成功并没有考虑数据的溢出。 两个很大的数相加可能会溢出;正数减负数也可能溢出;两个大数相乘也会溢出;任何数除以 0 都会溢出。
总结
以上所述是小编给大家介绍的PHP 使用位运算实现四则运算的代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对黑区网络网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
