# PHP 无符号右移 仅用于int形, PHP 的int为32位#// 右移旋转function rightRoate($int,$n){ ???$min = intval(PHP_INT_MAX + 1); ???$max = PHP_INT_MAX; ???for ($i=0; $i < $n; $i++) { ????????// 进行右移 ???????if($int & 1){ ???????????$num = $min; ???????????$int >>=1; ???????????$int |= $num; ???????}else{ ???????????$num = $max; ???????????$int >>= 1; ???????????$int &= $num; ???????} ???} ???return $int;}// 无符号右移function unsignedRight($int, $n){ ???for ($i=0; $i < $n; $i++) { ????????if( $int < 0 ){ ???????????$int >>= 1; ???????????$int &= PHP_INT_MAX; ???????}else{ ???????????$int >>= 1; ???????} ???} ???return $int;}
1. 需要注意的是位运算使用补码进行运算的
PHP无符号右移与旋转右移
原文地址:http://www.cnblogs.com/leezhicheng/p/7581009.html