Why Java doesn't support <<< operator

前端 未结 4 664
醉梦人生
醉梦人生 2021-02-05 09:22

Why doesn\'t Java support the <<< (unsigned left shift) operator, but does support the >>> (unsigned right shift) operator?

相关标签:
4条回答
  • 2021-02-05 09:36

    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...

    0 讨论(0)
  • 2021-02-05 09:59

    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.

    0 讨论(0)
  • 2021-02-05 10:00

    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.)

    0 讨论(0)
  • 2021-02-05 10:01

    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.

    0 讨论(0)
提交回复
热议问题