aspose file tools*
The moose likes Programmer Certification (SCJP/OCPJP) and the fly likes byte shift Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Spring in Action this week in the Spring forum!
JavaRanch » Java Forums » Certification » Programmer Certification (SCJP/OCPJP)
Bookmark "byte shift " Watch "byte shift " New topic
Author

byte shift

Yati Tan
Ranch Hand

Joined: May 28, 2005
Posts: 56
class EBH005 {
public static void main (String[] s) {
byte b = 127; b <<= 2;System.out.println(b);
}}

What is the result of attempting to compile and run the program?

a. Prints: -4
b. Prints: -3
c. Prints: -2
d. Prints: 0
e. Prints: 1
f. Prints: 127
g. Prints: 508
h. Run-time error
i. Compile-time error
j. None of the above

The answer to above ? is a. Can anybody exaplin me that ? The answer is -4 and I didnot get how 11111100 is converted to -4 ? I know, its two's complement...but still can anybody elaborate it further ?


SCJP 1.4<br />SCJA 1.0<br />SCWCD 1.4
Steve Morrow
Ranch Hand

Joined: May 22, 2003
Posts: 657

I did not get how 11111100 is converted to -4?

The leftmost bit indicates the sign (negative, in this case). Flip the bits and add 1.

Flipped: 00000011
Add 1: 00000100

Read the last number as binary and remember the sign. Ergo, -4.

Hope this helps.
Ryan Kade
Ranch Hand

Joined: Aug 16, 2005
Posts: 69
Yatikashipurut,

The answer is in your question. 11111100 is the 2's compliment of -4. Here's how it works:

In order to get a negative number in binary using 2's compliment, you flip all the bits and add one. So,

00000100 => 4

11111011 => flip all the bits
00000001 => add one
---------
11111100 => -4

Do the same process again to go back to +4.

11111100 => -4

00000011 => flip all the bits
00000001 => add one
---------
00000100 => 4
[ August 25, 2005: Message edited by: Ryan Kade ]
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: byte shift