Win a copy of Kotlin in Action this week in the Kotlin forum!
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:

# Bit depth - What does it really means?

Vasco Dion�sio
Greenhorn
Posts: 22
Could someone explain to me what exactly does the concept of "Bit Depth" means?
For instance:
A primitive type "char" has 16 bit (unsigned) so I can use 2^16 possible combinations (65536);
if a "byte" has 8 bits (signed) it means the first bit indicates if the value is positive or negative, right? So, I get 7 bits to the absolute numerical value. What is the bit depth of a "byte"? 7 or 8?
Thanks a lot...

Ray Stojonic
Ranch Hand
Posts: 326
I googled bit depth, it is the number of bits used to store information about each pixel in a computer image, I wouldn't worry to much about it terms of Java

Vasco Dion�sio
Greenhorn
Posts: 22
Neverthless, I think that's only one of the meanings of the expression, because I believe it also means the number of bits available for computing the range of numerical combinations in a primitive type in Java, am I right?
My question concerns more with the last meaning...

Ray Stojonic
Ranch Hand
Posts: 326
hmmm
(more googling)
.
.
.
A quick scan of the results tells me that 99% of the time, bit depth refers to number of bits used to describe a pixel.
However, the one exception I found refered to bit depth as the size of a container, in bits; which makes sense, given the first explanation.
So, you could say that the bit depth of a byte is 8, but I think people will understand you better if you stick with the tried and true: 'a byte is 8 bits'.

Ben McElyea
Greenhorn
Posts: 1
There are 8 bits to a byte. A byte has 256 possible values
a bit is a 1 or 0.

To convert from decimal to binary you just "turn on" one of the zeros
So a byte with the value of 00000001 is 1, 00000011 is 2, 00000100 is 4,
01100000 is 64+32 = 96 , 11111111 would be 128+64+32+16+8+4+2+1 = 255. When it is signed the bit at the decimal 128 place is used to either show positive or negative. So the max value a signed byte can have is 127:
011111111 or 64+32+16+8+4+2+1 = 127
111111111 or 64+32+16+8+4+2+1 = -127
[ December 19, 2003: Message edited by: Ben McElyea ]

Vasco Dion�sio
Greenhorn
Posts: 22
Thank you both

Michael Sullivan
Ranch Hand
Posts: 235
While reviewing the Osbourne Java2 SCJP/ SCJD book, bit depth refers the not only the number if bits in each primitive, but also the range of values that you might expect. For instance:
literal ranges for the exam. To calculate the range of a number, you use the following formula

-2 to the power of (bits-1) = negative range
2 to the power of (bits-1)-1 = positive range

the positive is one less than the negative because the zero is stored as a positve binary number.

TYPE.....BITS.....BYTES.....Possibilites

byte.....8........1.........256
short....16.......2.........> 60,000
int......32.......4.........> 4 billion
long.....64.......8
float....32.......4.........> 60,000
double...64.......4

Where I see this mostly tested (in the osbourne book) is when the code tries to implicitly cast into another type... so if you know that a char is really a 16bit unsigned integer, you know that it can be implicitly cast into int.
[ December 26, 2003: Message edited by: Michael Sullivan ]
[ December 26, 2003: Message edited by: Michael Sullivan ]