Win a copy of Kotlin in Action this week in the Kotlin forum!
programming forums Java Java JSRs Mobile Certification Databases Caching Books Engineering Languages Frameworks Products This Site Careers Other all forums
this forum made possible by our volunteer staff, including ...
Marshals:
Sheriffs:
Saloon Keepers:
Bartenders:

# binary shift operations with negative RHS ?

sivaram subram
Greenhorn
Posts: 9
hi javaranchers !
i am not able understand what's happening when RHS of the binary shift operands is negative ? (say 2 >> -2) . It does not give a compile error !
can anyone explain the logic behind the output of such operations?
thanks
sivaram

Manfred Leonhardt
Ranch Hand
Posts: 1492
Hi Sivaram,
When the value is positive we can say that for integers the shift amount is:
range modulus 32
and for long:
range modulus 64.
When the value is negative we can say the following for integers:
(32 - range) modulus 32
and for long:
(64 - range) modulus 64.
Therefore, we can say that the following 2 statements are equivalent:
1 << -2;
1 << 30;
Regards,
Manfred.

sing
Ranch Hand
Posts: 121
Hi Manfred,
Can you give more examples or any references to this negative shifting?Thank You.

Regards
Steffy

sing
Ranch Hand
Posts: 121
Hi Manfred,
Can you give more examples or any references of this negative shifting? Thank You.
Regards,
Steffy
Originally posted by Manfred Leonhardt:
Hi Sivaram,
When the value is positive we can say that for integers the shift amount is:
range modulus 32
and for long:
range modulus 64.
When the value is negative we can say the following for integers:
(32 - range) modulus 32
and for long:
(64 - range) modulus 64.
Therefore, we can say that the following 2 statements are equivalent:
1 << -2;
1 << 30;
Regards,
Manfred.

Junilu Lacar
Sheriff
Posts: 11146
160
Here a just a couple of threads that you can refer to.
http://www.javaranch.com/ubb/Forum1/HTML/001638.html http://www.javaranch.com/ubb/Forum33/HTML/002836.html
This site has a search facility that I suggest you try to use before posting a question.
Thanks,
Junilu