function createHash($string) {
$check1 = $this->stringToNumber($string, 0x1505, 0x21);
$check2 = $this->stringToNumber($string, 0, 0x1003F);
$factor = 4;
$halfFactor = $factor/2;
$check1 >>= $halfFactor;
$check1 = (($check1 >> $factor) & 0x3FFFFC0 ) | ($check1 & 0x3F);
$check1 = (($check1 >> $factor) & 0x3FFC00 ) | ($check1 & 0x3FF);
$check1 = (($check1 >> $factor) & 0x3C000 ) | ($check1 & 0x3FFF);
$calc1 = (((($check1 & 0x3C0) << $factor) |
($check1 & 0x3C)) << $halfFactor ) |
($check2 & 0xF0F );
$calc2 = (((($check1 & 0xFFFFC000) << $factor) |
($check1 & 0x3C00)) << 0xA) |
($check2 & 0xF0F0000 );
return ($calc1 | $calc2);
}
&gt;&gt; = 此表达式代表什么?它看起来很奇怪。我在谷歌上找不到任何问题。
答案 0 :(得分:2)
>>
表示'右移'和你指出的陈述 - 它意味着
$check1 = $check1 >>$halfFactor
答案 1 :(得分:1)
答案 2 :(得分:1)
相当于+=
的{{1}}。
>>
是二进制级别的按位移位
如果一个整数/字节的值>>
在其上执行0000 1000
会使它成为新值>> 1
,它会向右滑动位向右插入零。
0000 0100
会使>> 2
等。
有效结果与0000 0010
== >> X
该代码与:
相同$check1 = $check1 >> $halfFactor
答案 3 :(得分:0)
请参阅documentation (bitwise operators)。
此代码:
$check1 >>= $halfFactor;
实际上意味着类似的内容:将$check1
除以2 ^ $halfFactor
次,并将结果分配给$check1
。