2013-08-26 44 views
2

我發現一行在Java中是這樣的:
語法/運算符Java - 這行是什麼意思?

result |= (b & 0x1f) << shift; 

我搜索什麼運營商做的,但我仍然無法理解什麼是應該做的假設resultbshift是整數值。
有誰能告訴我這條線應該做什麼?

更新 - 這裏是代碼的樣品部分發現here

int b, shift = 0, result = 0; 
do { 
    b = encoded.charAt(index++) - 63; 
    result |= (b & 0x1f) << shift; 
    shift += 5; 
} while (b >= 0x20); 
+0

你需要提供更多的上下文來了解它正在做什麼。是從這裏的代碼:http://jeffreysambells.com/2010/05/27/decoding-polylines-from-google-maps-direction-api-with-java –

+0

可能重複[什麼是「| =」的意思是Java?](http://stackoverflow.com/questions/3420925/what-does-mean-in-java) – Zavior

+0

如果你知道'&','<<'和'| ='做什麼,你應該能夠了解該行的功能。 – Dukeling

回答

3

也許這樣的解釋可以幫助你:

A. (b & 0x1f):執行b0xf1之間的邏輯AND操作。這意味着:轉移到的shiftA操作的結果的左邊的量:返回b

B. A << shift的最後5位。這意味着:將b的最後5位向左移位01​​位。

C. result |= B:分配給result可變執行result之間本身和 邏輯OR操作B 操作的結果的結果。這意味着:執行result之間的邏輯ORb的最後5位向左移位01​​位的數量,然後將結果賦值給result變量。

希望它是可以理解的。

+1

不能期望更好,謝謝! – Sw4Tish

+0

你好嗎:) – dic19