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

# why 2 to the 7th -1?

Tom Tang
Ranch Hand
Posts: 133
This is what I found in the campfire story
http://www.javaranch.com/campfire/StoryCups.jsp
All of these integer types are SIGNED. The leftmost bit
represents the sign (positive or negative) and is NOT part of the
value. So with a byte, for instance, you don't get the whole 8 bits to represent your value. You get 7. This gives you a range, for bytes, of -2 to the 7th) through (2 to the 7th) -1. Why that little -1 on the
end? Because zero is in there, and zero counts as negative.

I don't understand the last sentence. for the larges byte 01111110, why should we have zero as the last digit? Why does zero count as negative?

Paul Anilprem
Enthuware Software Support
Ranch Hand
Posts: 4092
33
We do get all the bits. This is actually simple. For eg. byte is 8 bits so it can represent 2^8 unique integers. It basically boils down to "what" unique integers you want it to represent.
If you just want to represent +ive no. you can have 0 to 2^8-1 but if you also want to store -ive integers you can have -2^7 to 2^7-1. Note that, in both the cases you are representing 2^8 unique integers.
Now, as byte is "defined" to be signed, it represents -2^7 to 2^7-1.
If you consider char and short, both are of 16 bits, but char can represent 0 to 2^16-1 (Because it is "defined" by the language to be unsigned) and short can represent -2^15 to 2^15-1. Again, both do store 2^16 unique integers.
To understand how the sign bit (left most bit) is used to represent -ive no. you may want to read about 2's complement method. Search on the web, you'll find a lot of material on this.

HTH,
Paul.
------------------
Get Certified, Guaranteed!
(Now Revised for the new Pattern)
www.enthuware.com/jqplus

Paul Anilprem
Enthuware Software Support
Ranch Hand
Posts: 4092
33
For that little -1:
how many numbers can you represnt using 1 bit? 2^1 = 2. Right?
What are those 2 numbers? 0 and 1
ie. 0 - (2^1 - 1 )
-Paul.
------------------
Get Certified, Guaranteed!
(Now Revised for the new Pattern)
www.enthuware.com/jqplus

 It is sorta covered in the JavaRanch Style Guide.