aspose file tools*
The moose likes Beginning Java and the fly likes Diifference in Bitwise Operators Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "Diifference in Bitwise Operators " Watch "Diifference in Bitwise Operators " New topic
Author

Diifference in Bitwise Operators

Vishnu Sharma
Ranch Hand

Joined: Feb 03, 2010
Posts: 55
What is the basic difference in >> and >>>?? I got that >> is for signed & >>> for unsigned. But what i did not get is, in >> sign get copied & in >>> no sign get copied.
What exactly it means by Sign get copied.
Jesper de Jong
Java Cowboy
Saloon Keeper

Joined: Aug 16, 2005
Posts: 14156
    
  19

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

Java Beginners FAQ - JavaRanch SCJP FAQ - The Java Tutorial - Java SE 7 API documentation
Scala Notes - My blog about Scala
Vishnu Sharma
Ranch Hand

Joined: Feb 03, 2010
Posts: 55
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.
Henry Wong
author
Sheriff

Joined: Sep 28, 2004
Posts: 18847
    
  40

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


Books: Java Threads, 3rd Edition, Jini in a Nutshell, and Java Gems (contributor)
Campbell Ritchie
Sheriff

Joined: Oct 13, 2005
Posts: 38896
    
  23
I wrote about that a long time ago: here.
Janeice DelVecchio
Saloon Keeper

Joined: Sep 14, 2009
Posts: 1667
    
  11

Awesome thread... I just bookmarked it


When you do things right, people won't be sure you've done anything at all.
 
 
subject: Diifference in Bitwise Operators