You can store the value as a number if you have a datatype that can represent more than `choices`<sup>`count`</sup> possible values. In the case of 3<sup>40</suP>, this is the number 12,157,665,459,056,928,801 which is just [under 64 bits](http://www.wolframalpha.com/input/?i=log2%283%5E40%29). So, you could hypothetically store this in a `Unit64` ([docs](http://msdn.microsoft.com/en-us/library/system.uint64(v=vs.110).aspx)).

This isn't a good idea.

* As soon as you add another question, you will overflow this datatype. That will make life very difficult for refactoring.

* You've got something that isn't quite binary. This makes a mess of trying to decode it with binary operators. You can do it, but its [very](http://stackoverflow.com/q/12015752/289086) [ugly](http://stackoverflow.com/q/3400420/289086).

* If anything changes (you remove a question) it becomes very fragile. It is easy to break this.

These things combined should firmly point you in the direction of a list of three value enums which can then be serialized. Don't worry about a specific number. Make it a nice structure that you can work from and then convert that into however you want to transmit it. When storing it in a database or the like, store it as a nice structure (not a big number).

Trying to pack things into bits doesn't make sense anymore. Memory is cheap. Its easier to transmit a 40 character long string that contains `[ynm]` that you an work with - clean code that you can reason about without getting a headache.