今天朋友给我发来这样一道面试题
将下方代码改成PHP的
hval += (hval << op[7]) + (hval << op[3]) + (hval << op[9]) + (hval << op[5]) + (hval << op[1]);
<< 这个不是位运算了 查了一下文档 PHP和JS的用起来还不一样啊
经过多方观察得出结果
$hval = "1111111111";
$op = [1,2,3,4,5,6,7,8,9,11];
$hval = $hval + ll($hval,$op[7]) + ll($hval,$op[3]) + ll($hval,$op[9]) + ll($hval,$op[5]) + ll($hval,$op[1]);
echo $hval;
function ll($v, $n)
{
$t = ($v & 0xFFFFFFFF) << ($n & 0x1F);
return $t & 0x80000000 ? $t | 0xFFFFFFFF00000000 : $t & 0xFFFFFFFF;
}结果是 : 154655251
这里再放个js的结果
hval = 1111111111; op = [1,2,3,4,5,6,7,8,9,11]; hval += (hval << op[7]) + (hval << op[3]) + (hval << op[9]) + (hval << op[5]) + (hval << op[1]); -------------------------------------- 结果 154655251
程序员,产品 9.1 PHP Go 前端 JwCode 渐悟分享