php中的函数说明

时间:2010-02-09 07:29:11

标签: php bit-manipulation

我有一个功能,但我不知道它在做什么。

以下是我的功能

// My function gets two parameters lat and long

public function generate_peano1($lat, $lon)
{
    $lat = (($lat + 90.0)/180.0 * 32767) + 16384;
    $lon = ($lon + 180.0)/360.0 * 65535;

    $lat_16 = $lat&0x0000FFFF; // Not getting what is here.
    $lon_16 = $lon&0x0000FFFF; // Not getting what is here.

    $peano = self::derive_peano_32($lat_16, $lon_16);
    return $peano;

}

由于

阿维纳什

3 个答案:

答案 0 :(得分:6)

&运算符是bitwise AND operator0x0000FFFF表示16个未设置的位(零),后跟16个十六进制的设置位(1)。 然后,$lat & 0x0000FFFF将为您提供$ lat的16个最低有效位(little endian machine,这是最常见的架构)。

至于为什么这里需要它取决于self::derive_peano_32()做什么。我想它需要两个16位值并以某种方式连接它们,因此它们适合常规的32位整数。

答案 1 :(得分:1)

&bitwise AND operator

使用$lat & 0x0000FFFF,您将获得在运算符两侧设置的位;即,$lat0x0000FFFF

中设置的位

考虑到0x0000FFFF有16个最右边的位设置为1而另一个设置为0,您将获得设置为1的最右边16个位$lat

答案 2 :(得分:0)

这两行采用32位值$ lat和$ lon并将它们减少到16位值。请查看bitwise operators