devxlogo

Use Bit Fields to Store Significant Amounts of Data Optimally

Use Bit Fields to Store Significant Amounts of Data Optimally

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 }

devx-admin

Share the Post: