hello wise please tell me something about << and >> operatorsi mean there working i really do not understand them exactly so my lots of ques are wrong please i think u only can make it clear please cooperate i am new and my exam is near

"<<" op1 << op2 Shifts bits of op1 left by distance op2; fills with 0 bits on the right side ">>" op1 >> op2 Shifts bits of op1 right by distance op2; fills with highest (sign) bit on the left side ">>>" op1 >>> op2 Shifts bits of op1 right by distance op2; fills with 0 bits on the left side

Let's say we have positive integer number 12 whose binary equivalent is 00000000 00000000 00000000 00001100 (binary for 32 bits). Remember that the type operands (such as byte, short, etc) are implicitly promoted to the int type before any shift operators are applied.

1)

00000000 00000000 00000000 00001100 >> 2. The result is xx000000 00000000 00000000 00000011. We left 2 "x" bits need to fill. When shifting right ( >> ) the leftmost bits exposed by the right shift are filled in with previous contents of the leftmost bit. Therefore, we need to fill 0, the final result is 00000000 00000000 00000000 00000011

2)

00000000 00000000 00000000 00001100 << 2. The result is 00000000 00000000 00000000 001100xx. We left 2 "x" bits need to fill. When you shift left ( << ) the void left behind by the shift is filled by zero's. Therefore, we need to fill 0, the final result is 00000000 00000000 00000000 00110000

Let's take a look a negative number -12 whose binary equivalent is 11111111 11111111 11111111 11110100 (32 bits)

1)

11111111 11111111 11111111 11110100 >> 2. The result is xx111111 11111111 11111111 11111101. We left 2 "x" bits need to fill. When shifting right ( >> ) the leftmost bits exposed by the right shift are filled in with previous contents of the leftmost bit. Therefore, we need to fill 0, the final result is 11111111 11111111 11111111 11111101

2)

11111111 11111111 11111111 11110100 << 2. The result is 11111111 11111111 11111111 110100xx. We left 2 "x" bits need to fill. When you shift left ( << ) the void left behind by the shift is filled by zero's. Therefore, we need to fill 0, the final result is 11111111 11111111 11111111 11010000

Note that right shifting ( >> ) always preserves the sign of the original number i.e. to say that a negative number will stay negative while a positive number will stay positive after a right shift ( >> ) .

BUT, the >>> unsigned right shift operator always fill zero's & only zero's no matter poistive and negative number.

1) 00000000 00000000 00000000 00001100 >>> 2. The result is 00000000 00000000 00000000 00000011.

2) 11111111 11111111 11111111 11110100 >>> 2. The result is 00111111 11111111 11111111 11111101

What is the range for op2?

If the promoted type of the left-hand operand is int, only the five lowest-order bits of the right-hand operand are used as the shift distance. It is as if the right-hand operand were subjected to a bitwise logical AND operator & (�15.22.1) with the mask value 0x1f. The shift distance actually used is therefore always in the range 0 to 31, inclusive.

If the promoted type of the left-hand operand is long, then only the six lowest-order bits of the right-hand operand are used as the shift distance. It is as if the right-hand operand were subjected to a bitwise logical AND operator & (�15.22.1) with the mask value 0x3f. The shift distance actually used is therefore always in the range 0 to 63, inclusive.

For int type: 1) 00000000 00000000 00000000 00001100 >> 32 (or <<32). The result is 00000000 00000000 00000000 00001100.

2) 11111111 11111111 11111111 11110100 >> 32 (or <<32). The result is 11111111 11111111 11111111 11110100 [ June 19, 2006: Message edited by: wise owen ]

I think we're all glad to have wise owen posting here. But these are public forums, and I don't think anyone should be "discouraged" from participating. Remember, if a response isn't clear, you can always ask for clarification.

"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