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

# Why does Byte do this?

Shanna Ripley
Greenhorn
Posts: 18
Hi All,

I was doing a little test program...multiplying a byte, initialised to 1, by 8. I print out the result after each multiplication.
The results are:
2
4
8
16
32
64
-128
0

Can anyone tell me why the seventh value is -128 (why minus?) and the eighth is 0??
I know the Byte ranges from -128 to 127....I'm guessing that has something to do with it.

Henry Wong
author
Sheriff
Posts: 23295
125
Shanna Ripley wrote:Can anyone tell me why the seventh value is -128 (why minus?) and the eighth is 0??
I know the Byte ranges from -128 to 127....I'm guessing that has something to do with it.

For the longer answer why the numbers are -128 and then zero -- google for "twos complement", which is the format used to represent signed numbers in Java.

Henry

fred rosenberger
lowercase baba
Bartender
Posts: 12563
49
The top bit is used for the sign. So, when you get to 128, the bit pattern would be
1000 0000

The first bit tells us the answer is negative, then we use 2's complement to figure out the value. When you next double that, you would have

1 0000 0000

but the leading 1 gets chopped off and lost forever, leaving you with 0.

Shanna Ripley
Greenhorn
Posts: 18
Thanks Henry and Fred

 Consider Paul's rocket mass heater.