Assume your set has 3 elements - A, B, C
It can form 2^3 subsets.
The subsets are - {}, {A}, {B}, {C}, {A,B}, {B,C}, {A,C}, {A,B,C}
But why 2^3 ?
Notice, that each time I create a subset, for every element in the set I can choose to include or exclude that particular element. These are the choices I have for each element.
For 1, its 2 choices.
For 2, its 2x2 choices.
And, for 3, its 2x2x2 (2^3) choices.
So, we represent this binary choice (as there are only 2: include and exclude) with 1s and 0s.
We write 1 to indicate we are choosing the element, and we write 0 to indicate we are excluding the element.
Example - {A,C} can be written as 101.
I.e. - from A,B,C we have taken A, not taken B, and taken C.
Using this we can represent every subset, and we can access them by reading the binary values from 0-(2^N-1) where N is the number of elements in the set. (Also notice, 0 refers to the NULL set)
So we run a loop from 0 to (2^N-1) and for each of those we decipher what is the subset by looking at the binary value at that index.
Example - 000 = {}; 001={C}; 010 = {B}; 011= {B,C}; 100={A}; 101={A,C}; 110={A,B}; 111={A,B,C};
Hope I could clear your doubts.