Why doesn\'t Java support the <<<
(unsigned left shift) operator, but does support the >>>
(unsigned right shift) operator?
Java adds the operator ">>>" to perform logical right shifts, but because the logical and arithmetic left-shift operations are identical, there is no "<<<" operator in Java.
from Shifts in Java...
Why doesn't Java support the <<< (unsigned left shift) operator, but does support the >>> (unsigned right shift) operator?
That is because when you left shift the bits , the leftmost bit (AKA SIGNED Bit) is lost anyways.
Since unsigned left shift operator would do exactly the same thing as the existing left shift operator, we don't have it.
Why doesn't Java support the
<<<
(unsigned left shift) operator, but does support the>>>
(unsigned right shift) operator?
Because a (hypothetical) unsigned left shift operator would do exactly the same thing as the existing left shift operator.
(Hint: multiplying a binary integer by 2 entails left shifting by 1 and making the rightmost bit zero whether the integer representation is signed or unsigned. Write some examples on a piece of paper and test it for yourself.)
I think this is a design mistake. The << is not arithmetic shift. << is supposed multiply 2 if you do
0xF0FFFFFF << 4
it return a positive number! a negative number multiply 2 should never get a positive number. the << is doing <<< work.