| 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 ]
|
 |
 |
|
|
subject: byte shift
|
|
|