Ruben Lunda

Greenhorn

Posts: 5

posted 13 years ago

I dont understand the logic of this operation, when the second value is negative, like:

I try it in this

Applet

but i dont undertand it.

thanks

I try it in this

Applet

but i dont undertand it.

thanks

posted 13 years ago

Good question! Here's what I found:

"...when the value to be shifted (left-operand) is an int, only the last 5 [binary] digits of the right-hand operand are used to perform the shift. The actual size of the shift is the value of the right-hand operand masked by 31 ... [so] the shift distance is always between 0 and 31."

In binary, an int of -1 is:

11111111 11111111 11111111 11111111

Taking only the last 5 digits, we get:

00000000 00000000 00000000 00011111

...which is 31.

Therefore (1 << -1) is equivalent to (1 << 31).

Hmmm... Who knew?

[ September 16, 2004: Message edited by: marc weber ]

"...when the value to be shifted (left-operand) is an int, only the last 5 [binary] digits of the right-hand operand are used to perform the shift. The actual size of the shift is the value of the right-hand operand masked by 31 ... [so] the shift distance is always between 0 and 31."

**Ref:**http://www.janeg.ca/scjp/oper/shift.htmlIn binary, an int of -1 is:

11111111 11111111 11111111 11111111

Taking only the last 5 digits, we get:

00000000 00000000 00000000 00011111

...which is 31.

Therefore (1 << -1) is equivalent to (1 << 31).

Hmmm... Who knew?

[ September 16, 2004: Message edited by: marc weber ]

"We're kind of on the level of crossword puzzle writers... And no one ever goes to them and gives them an award." *~Joe Strummer*

sscce.org

Barry Gaunt

Ranch Hand

Posts: 7729

posted 13 years ago

A small add-on to marc's post: it's 6 bits for shifting a

**long**.Ask a Meaningful Question and HowToAskQuestionsOnJavaRanch

Getting someone to think and try something out is much more useful than just telling them the answer.

Barry Gaunt

Ranch Hand

Posts: 7729

posted 12 years ago

Getting someone to think and try something out is much more useful than just telling them the answer.