Win a copy of Functional Reactive Programming this week in the Other Languages forum!

# byte shift

Yati Tan
Ranch Hand
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 ?

Steve Morrow
Ranch Hand
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

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

Hope this helps.

Ranch Hand
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
---------
11111100 => -4

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

11111100 => -4

00000011 => flip all the bits