java побитови оператори и знак за равенство; съставни оператори

Малко съм объркан:

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

Знам, че ‹‹ е операторът за ляво преместване със знак и | Побитово включващото ИЛИ, но съм объркан какво прави равенството?

Така че юмрук v е 0. Значи ‹‹ няма никакъв ефект? Тогава е равно на 1000, но какво се случва тогава?

редактиране: редактирах заглавието, така че другите да могат да намерят по-добре този въпрос: добавих „съставни оператори“


person Thomas    schedule 25.07.2013    source източник
comment
Има ефект. v = v << 8 и след това v = v | 230.   -  person Maroun    schedule 25.07.2013


Отговори (3)


Има донякъде като +=.

Например x+=3 означава добавяне на 3 към x; съхранявайте в x.

v <<= 8;

измества наляво v 8 бита и съхранява до v, функционално еквивалентно на v=v << 8.

v |= 230;

прави побитово ИЛИ с 230 и съхранява обратно към v, еквивалентно на v=v | 230.

Сега, поради ограничения на производителността и оптимизации, тази операция може да се извърши на място на ниско ниво.

person nanofarad    schedule 25.07.2013
comment
@Томас Няма проблем. Моля, приемете отговора, който ви е помогнал най-много, като поставите отметка до него. - person nanofarad; 25.07.2013
comment
Трябва да изчакам няколко минути, преди да мога; но аз ще :) - person Thomas; 25.07.2013
comment
След изпълнението v=v | 230 каква ще бъде стойността v ?? - person Suresh Atta; 25.07.2013
comment
@sureshatta Просто опитайте и вижте. Зависи от първоначалната стойност v - person nanofarad; 25.07.2013

Те са съставни оператори, като += и -=. Те извършват операцията и след това присвояват резултата обратно на v.

По принцип:

v <<= 8;

е в сила

v = v << 8;

И по подобен начин

v |= 230;

е в сила

v = v | 230;

Можете да видите паралела с += и -=:

v += 1;

е ефективно

v = v + 1;
person T.J. Crowder    schedule 25.07.2013

По принцип това:

v <<= 8; 
v |= 230;

е еквивалентно на това:

v = v << 8; 
v = v | 230;
person jh314    schedule 25.07.2013