2010-02-09 76 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個最右邊的位。