programming forums Java Java JSRs Mobile Certification Databases Caching Books Engineering OS Languages Frameworks Products This Site Careers Other all forums
this forum made possible by our volunteer staff, including ...
Marshals:
Sheriffs:
Saloon Keepers:
Bartenders:

# 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