In the book The C++ Programming Language

It reads
"An enumerator can be initialized by a constant expression of integral type. The range
of an enumeration holds all the enumeration's enumerator values rounded up to the nearest binary power minus 1"
Code:
enum e1 { dark, light };  // range 0:1
enum e2 { a = 3, b = 9 }; // range: 0:15
enum e3 { min = -10, max = 1000000 }; // range -1048576:1048575
I don't understand how you get the ranges. Could anyone explain a little bit?
Thanks
Jack