Page 129 - 6437
P. 129
Bit fiels
Suppose your C program contains a number of TRUE/FALSE variables grouped in a
structure called status, as follows:
This structure requires 8 bytes of memory space but in actual, we are going to store either
struct
{
unsigned int widthValidated;
unsigned int heightValidated;
} status;
0 or 1 in each of the variables. The C programming language offers a better way to utilize the
memory space in such situations.
If you are using such variables inside a structure, then you can define the width of a
variable which tells the C compiler that you are going to use only those number of bytes. For
example, the above structure can be rewritten as follows:
The above structure requires 4 bytes of memory space for status variable, but only 2 bits
struct
{
unsigned int widthValidated : 1;
unsigned int heightValidated : 1;
} status;
will be used to store the values.
If you will use up to 32 variables, each one with a width of 1 bit, then also the status
structure will use 4 bytes. However, as soon as you have 33 variables, it will allocate the next slot
of the memory and it will start using 8 bytes. Let us check the following example to understand
the concept:
#include <stdio.h>
#include <string.h>
/* define simple structure */
struct
{
unsigned int widthValidated;
132