2013-07-25 131 views
1

我有點困惑:java按位運算符和等號;複合運算符

long v = 0; 
v <<= 8; 
v |= 230; 

我知道< <是簽署向左移位運算符和|按位包含或,但我很困惑等於什麼?

所以拳頭v是0.所以< <沒有任何影響?那麼它等於1000 但是會發生什麼呢?

編輯:我編輯了標題,以便其他人可以更好地發現這樣一個問題:增加了「複合運算符」

+0

它的效果。 'v = v << 8'然後'v = v | 230'。 – Maroun

回答

3

有有點像+=

例如x+=3表示將3加到x;存儲到x。

v <<= 8; 

左移v 8位,並存儲到v,功能上相當於v=v << 8

v |= 230; 

執行按位與OR 230個,並存儲回至v,相當於v=v | 230

現在,由於性能限制和優化,此操作可能在處於低級別。

+0

Thx爲您的答案! – Thomas

+0

@Thomas沒問題。請接受最能幫助您使用旁邊複選標記的答案。 – hexafraction

+2

我必須等幾分鐘才能做到;但我會:) – Thomas

3

他們複合運營商,像+=-=是。他們執行操作,然後將結果分配給v

基本上:

v <<= 8; 

實際上是

v = v << 8; 

並且類似地

v |= 230; 

實際上是

v = v | 230; 

您可以+=-=看到並行:

v += 1; 

實際上是

v = v + 1; 
+0

完美答案thx! – Thomas

+0

@Thomas:不客氣,很高興幫助。 –

0

基本上,這樣的:

v <<= 8; 
v |= 230; 

等效於此:

v = v << 8; 
v = v | 230;