Професионална програма
Loading...
+ Нов въпрос
martin.nikolov avatar martin.nikolov 12 Точки

Здравей,

можеш да видиш във форума на Телерик, където имаше подобен въпрос (линк).

Да кажем, че имаме числото A = 60 (0011 1100);

А = А >>> 2

А = 15 (0000 1111);

---

A = 60 (0011 1100);

А = А <<< 2

А = 240 (1111 0000);

---

Повече информация:

http://javarevisited.blogspot.com/2013/03/bitwise-and-bitshift-operators-in-java-and-or-xor-left-right-shift-example-tutorial.html

http://stackoverflow.com/questions/3312853/an-example-of-a-bit-shift-operation-in-java

 

3
ttitto avatar ttitto 1154 Точки

Това с преместването на битове е ясно. Но тези оператори имат = накрая и са към групата за присвояване. Затова ме озадачиха и си помислих, че са специални за Java. А и гугъл мълчи за тях. Явно са нещо от типа на +=, -=. Вероятно а>>=b е равносилно на a=a>>b ?

0
martin.nikolov avatar martin.nikolov 12 Точки

Да, израза а >>>= 2 е еквивалентен на a = a >>> 2.

Същото като a += 5 (a = a + 5).

В учебниците се среща като кратък запис или комбинирани оператори.

0
Tr00peR avatar Tr00peR 569 Точки

Сам си си отговорил тук: "Вероятно а>>=b е равносилно на a=a>>b ?" :)

А>>=Б е същото като А=А>>Б

А<<=Б е същото като А=А<<Б

И на С# ги има, изглежда си ги пропуснал :)

 

1
DimitarYotov avatar DimitarYotov 75 Точки

нещо като +=, *= ..... но със шифтване

0
Velichkov avatar Velichkov 87 Точки

Това са битови оператори за присвояване. a <<= 2 ще е еквивалентно на а=а<<2. Останалите работят по същия принцип. Разликата между 2рия и 3тия е че при третия се добавят нулите отзад на числото. За повече инфо можеш да видиш следния линк: http://www.tutorialspoint.com/java/java_basic_operators.htm  под секцията за "Assignment operators".

1