我有點困惑:java按位運算符和等號;複合運算符
long v = 0;
v <<= 8;
v |= 230;
我知道< <是簽署向左移位運算符和|按位包含或,但我很困惑等於什麼?
所以拳頭v是0.所以< <沒有任何影響?那麼它等於1000 但是會發生什麼呢?
編輯:我編輯了標題,以便其他人可以更好地發現這樣一個問題:增加了「複合運算符」
我有點困惑:java按位運算符和等號;複合運算符
long v = 0;
v <<= 8;
v |= 230;
我知道< <是簽署向左移位運算符和|按位包含或,但我很困惑等於什麼?
所以拳頭v是0.所以< <沒有任何影響?那麼它等於1000 但是會發生什麼呢?
編輯:我編輯了標題,以便其他人可以更好地發現這樣一個問題:增加了「複合運算符」
有有點像+=
。
例如x+=3
表示將3加到x;存儲到x。
v <<= 8;
左移v 8位,並存儲到v,功能上相當於v=v << 8
。
v |= 230;
執行按位與OR 230個,並存儲回至v,相當於v=v | 230
。
現在,由於性能限制和優化,此操作可能在處於低級別。
Thx爲您的答案! – Thomas
@Thomas沒問題。請接受最能幫助您使用旁邊複選標記的答案。 – hexafraction
我必須等幾分鐘才能做到;但我會:) – Thomas
他們複合運營商,像+=
和-=
是。他們執行操作,然後將結果分配給v
。
基本上:
v <<= 8;
實際上是
v = v << 8;
並且類似地
v |= 230;
實際上是
v = v | 230;
您可以+=
和-=
看到並行:
v += 1;
實際上是
v = v + 1;
完美答案thx! – Thomas
@Thomas:不客氣,很高興幫助。 –
基本上,這樣的:
v <<= 8;
v |= 230;
等效於此:
v = v << 8;
v = v | 230;
它的效果。 'v = v << 8'然後'v = v | 230'。 – Maroun