If you only think in bits, each extra bit you allow doubles the number of represetable combinations. Eg one bit allows for two values to be represented: on/off, true/false, yes/no, light/dark...
Now if you have more than two states you want to encode you need at least one additional bit. Eg two bits allow for four different states (00,01,10,11). But that way (adding a bit, or highler level a field in a struct/tuple) your numbr of possible states grow exponentially.
What if you have exactly 3 states you want to represent (eg small/medium/largem, up/down/mute or x/y/z) or 6 (not a power of two) states? The way you encode the states by combining bits you allow for more states to be encoded than are actually valid. So you allow invalid states. Eg for ["00"~small, "01"~medium, "10"~large] you can not decode "11".
The way combining bits works can be though of as product data types. The number of possible combinations get multiplied when composing data types.
Now sum types enable you to define number of states which are not-power-of-two by summing the possible combinations when composing.
Algebraic data types combine product and sum types so you can define set of encodable states as the exact number of actual valid sates you want your system to have.