Ruben Lunda

Greenhorn

Posts: 5

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

It is sorta covered in the JavaRanch Style Guide. |