# Diifference in Bitwise Operators

Vishnu Sharma

Ranch Hand

Posts: 55

posted 6 years ago

Integers are stored in two's complement format in Java (as in almost every other programming language). The leftmost bit of an int is the sign bit - if it's set, the number is negative, if it's cleared, the number is positive.

The >> operator shifts all the bits of the operand to the right and fills in the new bits on the left by copying the sign bit of the operand.

The >>> operator shifts all the bits of the operand to the right and sets the new bits on the left to zero.

For example: Suppose you have the number 11000101.

11000101 >> 2 =

11000101 >>> 2 =

The >> operator shifts all the bits of the operand to the right and fills in the new bits on the left by copying the sign bit of the operand.

The >>> operator shifts all the bits of the operand to the right and sets the new bits on the left to zero.

For example: Suppose you have the number 11000101.

11000101 >> 2 =

**11**110001 note that the leftmost bits are set to 111000101 >>> 2 =

**00**110001 note that the leftmost bits are set to 0
Vishnu Sharma

Ranch Hand

Posts: 55

posted 6 years ago

Ohk. Please correct me if i am wrong. by the example i understood as, we will delete the two right bits & shift all remaining towards right & for deleting two bits, we will be adding two 1s in case of >> and two 0s in case of >>> to the left most side.

Please respond.

Jesper Young wrote:Integers are stored in two's complement format in Java (as in almost every other programming language). The leftmost bit of an int is the sign bit - if it's set, the number is negative, if it's cleared, the number is positive.

The >> operator shifts all the bits of the operand to the right and fills in the new bits on the left by copying the sign bit of the operand.

The >>> operator shifts all the bits of the operand to the right and sets the new bits on the left to zero.

For example: Suppose you have the number 11000101.

11000101 >> 2 =11110001 note that the leftmost bits are set to 1

11000101 >>> 2 =00110001 note that the leftmost bits are set to 0

Ohk. Please correct me if i am wrong. by the example i understood as, we will delete the two right bits & shift all remaining towards right & for deleting two bits, we will be adding two 1s in case of >> and two 0s in case of >>> to the left most side.

Please respond.

Regards,

Vishnu

posted 6 years ago

Almost.... Given this...

X0101010 where X could be either 1 or 0.

X0101010 >> 2 will yield

and

X0101010 >>>2 will yield

So, if X is zero, the two expressions will yield the same result (ie. >> doesn't always add 1's on the left).

Henry

Vishnu Sharma wrote:

Ohk. Please correct me if i am wrong. by the example i understood as, we will delete the two right bits & shift all remaining towards right & for deleting two bits, we will be adding two 1s in case of >> and two 0s in case of >>> to the left most side.

Please respond.

Almost.... Given this...

X0101010 where X could be either 1 or 0.

X0101010 >> 2 will yield

**XX**X01010

and

X0101010 >>>2 will yield

**00**X01010

So, if X is zero, the two expressions will yield the same result (ie. >> doesn't always add 1's on the left).

Henry

Campbell Ritchie

Sheriff

Posts: 50246

79