今天朋友给我发来这样一道面试题
将下方代码改成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
程序员,产品
8.7
PHP Go 前端
JwCode
渐悟分享