I need help understanding a little better about certain aspects of memory management.

1. Why isn't bool 1 bit? (possibly related with 2.)

2. All types I sizeof() seem to be 4 bytes or larger. 32 bits seem to be the minimum. Is this what defines 32 bit machines?

3. Simple classes with just data members don't reflect on memory the sum of their data members sizes. Is there an overhead to a class type?

4. If so, is this a known fixed value? My experiments seem to show a variable overhead.

5. What is the exact formula to calculate the significant digits on integral and floating point numbers?