2010-02-09 41 views
2

我有一个功能,但我没有得到它在做什么。在php中的功能解释

下面是我的功能

// 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; 

} 

感谢

阿维纳什

回答

6

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

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

1

这个&都是bitwise AND operator

使用$lat & 0x0000FFFF,你会得到位于操作符两侧的位; i.e.e,即在两个$lat0x0000FFFF

设置位考虑0x0000FFFF已经将它设置为1 16右边的位,另一组到0,你会得到了在$lat设置为1 16个最右边的位。