本文介绍了PHP相当于JavaScript的>>>右移带填零位运算符?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我可以知道我该怎么办PHP​​ >>>?这样的运营商是不是在PHP中使用,但可在Javascript。

May I know how can I do PHP >>> ? Such operators is not available in PHP, but is available in Javascript.

我好不容易才找到一个函数如下:

I just managed to discover a function as follow:

function zeroFill($a, $b)
{
    $z = hexdec(80000000);
        if ($z & $a)
        {
            $a = ($a>>1);
            $a &= (~$z);
            $a |= 0x40000000;
            $a = ($a>>($b-1));
        }
        else
        {
            $a = ($a>>$b);
        }
        return $a;
}

但不幸的是,它并不完美。

but unfortunately, it doesn't work perfectly.

EG:-1149025787 >>> 0
JavaScript的返回3145941509
PHP ZEROFILL()返回0

EG: -1149025787 >>> 0Javascript returns 3145941509PHP zeroFill() return 0

推荐答案

我研究周围的网,用我自己的ZEROFILL功能基础上给出的解释出来。此方法适用于我的计划。

I studied around the webs and come out with my own zerofill function, base on the explanation given. This method works for my program.

看一看:

function zeroFill($a,$b) {
    if ($a >= 0) {
        return bindec(decbin($a>>$b)); //simply right shift for positive number
    }

    $bin = decbin($a>>$b);

    $bin = substr($bin, $b); // zero fill on the left side

    $o = bindec($bin);
    return $o;
}

这篇关于PHP相当于JavaScript的>>>右移带填零位运算符?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-16 16:51
查看更多