我有一个功能,但我不知道它在做什么。
以下是我的功能
// 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;
}
由于
阿维纳什
答案 0 :(得分:6)
&
运算符是bitwise AND operator。 0x0000FFFF
表示16个未设置的位(零),后跟16个十六进制的设置位(1)。
然后,$lat & 0x0000FFFF
将为您提供$ lat的16个最低有效位(little endian machine,这是最常见的架构)。
至于为什么这里需要它取决于self::derive_peano_32()
做什么。我想它需要两个16位值并以某种方式连接它们,因此它们适合常规的32位整数。
答案 1 :(得分:1)
使用$lat & 0x0000FFFF
,您将获得在运算符两侧设置的位;即,$lat
和0x0000FFFF
考虑到0x0000FFFF
有16个最右边的位设置为1
而另一个设置为0
,您将获得设置为1
的最右边16个位$lat
。
答案 2 :(得分:0)
这两行采用32位值$ lat和$ lon并将它们减少到16位值。请查看bitwise operators。