PHP equivalent javascript >>> shift right with zero fill bitwise operators?

后端 未结 8 1484
孤城傲影
孤城傲影 2021-01-13 19:43

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:

         


        
8条回答
  •  清歌不尽
    2021-01-13 20:25

    /**
     * The >>> javascript operator in php x86_64
     * Usage: -1149025787 >>> 0 ---> rrr(-1149025787, 0) === 3145941509
     * @param int $v
     * @param int $n
     * @return int
     */
    function rrr($v, $n)
    {
        return ($v & 0xFFFFFFFF) >> ($n & 0x1F);
    }
    
    /**
     * The >> javascript operator in php x86_64
     * @param int $v
     * @param int $n
     * @return int
     */
    function rr($v, $n)
    {
        return ($v & 0x80000000 ? $v | 0xFFFFFFFF00000000 : $v & 0xFFFFFFFF) >> ($n & 0x1F);
    }
    
    
    /**
     * The << javascript operator in php x86_64
     * @param int $v
     * @param int $n
     * @return int
     */
    function ll($v, $n)
    {
        return ($t = ($v & 0xFFFFFFFF) << ($n & 0x1F)) & 0x80000000 ? $t | 0xFFFFFFFF00000000 : $t & 0xFFFFFFFF;
    }
    

    Enjoy it.

提交回复
热议问题