Diifference in Bitwise Operators
Vishnu Sharma
Ranch Hand
Posts: 55
posted 7 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 = 11110001 note that the leftmost bits are set to 1
11000101 >>> 2 = 00110001 note that the leftmost bits are set to 0
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
Vishnu Sharma
Ranch Hand
Posts: 55
posted 7 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 7 years ago
Almost.... Given this...
X0101010 where X could be either 1 or 0.
X0101010 >> 2 will yield XXX01010
and
X0101010 >>>2 will yield 00X01010
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 XXX01010
and
X0101010 >>>2 will yield 00X01010
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
Marshal
Posts: 53165
124
my overalls have superpowers  they repel people who think fashion is important. Tiny ad:
the new thread boost feature brings a LOT of attention to your favorite threads
https://coderanch.com/t/674455/ThreadBoostfeature
