Ferid Gürbüz
Ferid Gürbüz

Reputation: 596

"<<" operator in java

Fallowing statement is from Character class of java:

(1 << Character.PARAGRAPH_SEPARATOR)) >> type

PARAGRAPH_SEPARATOR is a byte and type is an integer.

The operators in this sentence, what do they do? how and where I can use those operators?

Here is the oracles java.lang.Character doc. Nearly all the methods in the class uses those operators.

Upvotes: 2

Views: 3142

Answers (5)

Singh123
Singh123

Reputation: 216

It works as a highly optimized multiple comparison. The signed left shift operator "<<" shifts a bit pattern to the left, and the signed right shift operator ">>" shifts a bit pattern to the right. The bit pattern is given by the left-hand operand, and the number of positions to shift by the right-hand operand. The unsigned right shift operator ">>>" shifts a zero into the leftmost position, while the leftmost position after ">>" depends on sign extension.

for more detail,You can visit below link . http://docs.oracle.com/javase/tutorial/java/nutsandbolts/op3.html

Upvotes: 1

Leo Izen
Leo Izen

Reputation: 4289

<< is the left shift operator: It shifts the binary number stored in the computer left. For example, 9 in binary is 1001. 9 << 2 makes 100100 in binary (36), because it shifts it left and adds 0s at the end. 1 << n is the same thing as Math.pow(2, n) except it is way faster and better in general, as well as returning int, not double.

>> is right shift. It shifts it right, and discards empty bits. 13 is 1101 in binary, so 13 >> 1 is 110 in binary, or 6 normally.

Upvotes: 2

Marcelo Cantos
Marcelo Cantos

Reputation: 186098

They are bit-shift operators. << shifts the bits "left" (towards the most-significant bit), and vice-versa for >>. Shifting left or right by n bits is pretty much the same as multiplying or dividing, respectively, by 2n.

See @axtavt's comment for an explanation of how these operators are being used in this context.

Upvotes: 7

steinar
steinar

Reputation: 9663

These are the bitwise shift operators.

If you left shift the following byte:

00000001

you would get:

00000010

I.e. the pattern has "shifted" to the left and zeros fill in on the right. So if you apply the right shift operator >> on that result, you'll get the original byte again.

You'll notice that the decimal values of these numbers are 1 and 2. If you shift left once again you'll get:

00000100 = 4

So you see that shifting to the left multiplies the number by two (given that it doesn't overflow), while right shifting divides by two. This happens very efficiently in most computers. So that's one example of how you might use these operators in a practical way.

Upvotes: 3

Related Questions