PHP实现左移移和无符号右移(js中的 >>>)

移位包括有符号左移(<<)、有符号右移(>>)、无符号右移(>>...

移位包括有符号左移(<<)、有符号右移(>>)、无符号右移(>>>),其中 js 支持三种移位,PHP只支持前两种移位(没查到第三种),恰好需要PHP进行无符号右移,


php左移与JS左移结果不一致的原因是JS是32位,但是PHP是64位,因此需要进行转换

$n为值,$m为偏移量

function zy32($n,$m){
    return (($n << $m) << 32) >> 32;}


此处实现一下。先看结果

将数字 a向右无符号移动n 位

function uright($a, $n)
{
    $c = 2147483647>>($n-1);
    return $c&($a>>$n);
}


评论

93攻略 回复该评论 2023-05-12 18:59:37
你写得非常清晰明了,让我很容易理解你的观点。