Both C and C++ enable you to store and access data directly in the tiniest possible unit: a bit. This technique is required when dealing with a huge amount of data, for example, on databases containing dozens of millions of records; when memory is scarce (i.e., in embedded systems, hand watch phone books) or when transmitted via a slow communication link. In the following example, only one byte is used to store a person’s data, instead of three which would have been needed otherwise. When multiplied by a factor of 10 million, for example a national registry’s records, it does make a difference:
struct PersonalData {unsigned int marital_stat: 3; //3 bitsunsigned int gender: 1; //1 bitunsigned int children: 4; //4 bits};enum Stat {single, married, divorced, widowed, separated};enum Gender {male, female};void f () { PersonalData pd [1000]; //1000 bytes //fill with data pd[0].marital_stat = married; pd[0].gender = female; pd[0].children = 2; //ints can be used but its the user's
//responsibilty to avoid overflow. Enum's are
//safe, though //...etc. TrasmitToClient(&pd[0], 1000); //transmit all of them }