File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
The moose likes Programmer Certification (SCJP/OCPJP) and the fly likes shift opeartors - need help Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of EJB 3 in Action this week in the EJB and other Java EE Technologies forum!
JavaRanch » Java Forums » Certification » Programmer Certification (SCJP/OCPJP)
Bookmark "shift opeartors - need help" Watch "shift opeartors - need help" New topic
Author

shift opeartors - need help

Vidya Ramachandran
Greenhorn

Joined: Nov 04, 2005
Posts: 24
hello,

i have some doubts on the operations of shift operators... Can some one

pls answer how we get sucha result.

a) public class test {
public static void main(String args[]) {
byte x = 3;
x = (byte)~x;
System.out.println(x);
}
}


The answer is -4

b) public class test {
public static void main(String args[]) {
int x;

x = -3 >> 1;
x = x >>> 2;
x = x << 1;
System.out.println(x);
}
}

The answer is 2147483646

c) public class test {
public static void main(String args[]) {
int i = -1;
i = i >> 1;
System.out.println(i);
}
}

The answer is -1

Basically i have a doubt as how the negative numbers like -3 etc will

be represented in binary. Also how the ~ works.

please help me folks...
Sreeram Desigan
Greenhorn

Joined: Apr 07, 2006
Posts: 23
Dear Smarty,
In java -ive numbers are represented in twos compliment arithmetics. That is the binary representation of a number can be obtained by inverting the bit representation of the number and adding 1 to the result. Thus -3 will be represented as-
3 in binary is 00000011
now for - 3 invert the bits first
which will be 11111100
now add 1 to the result. thus 11111101 this is the binary reprentation of -3 in a 8 bit format. (i took 8 bits for ease of representation).
Bitwise operators are very easy to use i will tell u some basic rules of finding the results.
~x = (-x)-1 // this rule is always true thus ~3 = (-3) -1 = -4
x >>n = x/(2 power of n)// 9>>2 = 9 / (2 power 2) = 9/4 = 2;
x<<n = x * (2 power of n)//
Please let me know if further clarifications are required.
Keith Lynn
Ranch Hand

Joined: Feb 07, 2005
Posts: 2367
a) public class test {
public static void main(String args[]) {
byte x = 3;
x = (byte)~x;
System.out.println(x);
}
}


The bit value of the byte 3 is

00000011

~ is the complement operator

The result of ~3 is

11111111111111111111111111111100

Casting it to a byte we get

11111100

Which is the representation of -4.

b) public class test {
public static void main(String args[]) {
int x;

x = -3 >> 1;
x = x >>> 2;
x = x << 1;
System.out.println(x);
}
}


The representation of -3 is

11111111111111111111111111111101

The first shift gives

11111111111111111111111111111110

The second shift gives

00111111111111111111111111111111

The third shift gives

01111111111111111111111111111111

The value is

Integer.MAX_VALUE

c) public class test {
public static void main(String args[]) {
int i = -1;
i = i >> 1;
System.out.println(i);
}
}


The bit representation of -1 is

11111111111111111111111111111111

The shift gives

11111111111111111111111111111111

which is -1.

Negative numbers are stored using 2's complement.
Mark Spritzler
ranger
Sheriff

Joined: Feb 05, 2001
Posts: 17249
    
    6

"smarty"

Change your display name back to your real first and last names.

Mark


Perfect World Programming, LLC - Two Laptop Bag - Tube Organizer
How to Ask Questions the Smart Way FAQ
Bert Bates
author
Sheriff

Joined: Oct 14, 2002
Posts: 8764
    
    5
Hey Guys,

Also remember that this is a topic on 1.4, but it's NOT a topic on the 1.5 exam.


Spot false dilemmas now, ask me how!
(If you're not on the edge, you're taking up too much room.)
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: shift opeartors - need help
 
Similar Threads
operators
Doubts on shift operations
simple code
well a doubt !
Doubt in negative numbers in binary format