0% found this document useful (0 votes)
59 views11 pages

C BitFields

Bit fields in C allow structure members to be defined using a specific width in bits rather than bytes, allowing more efficient use of memory when member values are known to be within a small range. They are declared by specifying an integer type, member name, and bit width (e.g. "int member : 5;"). This allows optimizing structures like a date where day is 1-31 and month is 1-12, reducing the size compared to normal integer declarations. Bit fields are useful when storage is limited or transmitting/accessing bit-level data.

Uploaded by

LEESHMA
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
59 views11 pages

C BitFields

Bit fields in C allow structure members to be defined using a specific width in bits rather than bytes, allowing more efficient use of memory when member values are known to be within a small range. They are declared by specifying an integer type, member name, and bit width (e.g. "int member : 5;"). This allows optimizing structures like a date where day is 1-31 and month is 1-12, reducing the size compared to normal integer declarations. Bit fields are useful when storage is limited or transmitting/accessing bit-level data.

Uploaded by

LEESHMA
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 11

C BitFields

MODULE 3
• In C, we can specify the size (in bits) of the structure and union

members. The idea of bit-field is to use memory efficiently when we

know that the value of a field or group of fields will never exceed a

limit or is within a small range.

• C Bit fields are used when the storage of our program is limited.
• Bit fields provides exact amount of bits required by the variable.

• Bit fields uses the memory very efficiently.

• The bits must be specified by non-negative(unsigned) integer type

followed by a colon(:). Bit fields can also used as member in unions.


Need of Bit Fields in C

•Reduces memory consumption.

•To make our program more efficient and flexible.

•Easy to Implement.
Declaration of C Bit Fields
Bit-fields are variables that are defined using a predefined width or size. Format and the

declaration of the bit-fields in C are shown below:

Syntax of C Bit Fields

struct { data_type member_name : width_of_bit-field; };


where,

•data_type: It is an integer type that determines the bit-field value which is to be

interpreted. The type may be int, signed int, or unsigned int.

•member_name: The member name is the name of the bit field.

•width_of_bit-field: The number of bits in the bit-field. The width must be less than

or equal to the bit width of the specified type.


Applications of C Bit Fields
• If storage is limited, we can go for bit-field.

• When devices transmit status or information encoded into multiple bits for

this type of situation bit-field is most efficient.

• Encryption routines need to access the bits within a byte in that situation bit-

field is quite useful.


#include <stdio.h>
int main()
{
struct sample {
unsigned int b1;
unsigned int b2;
}s1;
struct sample2 {
unsigned int b1:1;
unsigned int b2:1;
}s2;
printf("Size of structure sample : %d ", sizeof(s1));
printf("\nSize of structure sample2 : %d ", sizeof(s2)); Output
return 0;
}
Size of structure sample : 8
Size of structure sample2 : 4
Structure Without Bit Fields

// C Program to illustrate the structure without bit field


#include <stdio.h>

// A simple representation of the date


struct date {
unsigned int d;
unsigned int m;
unsigned int y;
};
Output
int main() Size of date is 12 bytes
{ Date is 31/12/2014
// printing size of structure
printf("Size of date is %lu bytes\n",
sizeof(struct date));
struct date dt = { 31, 12, 2014 };
printf("Date is %d/%d/%d", dt.d, dt.m, dt.y);
}
The above representation of ‘date’ takes 12 bytes on a compiler whereas an unsigned

int takes 4 bytes. Since we know that the value of d is always from 1 to 31, and the

value of m is from 1 to 12, we can optimize the space using bit fields.
// C program to demonstrate use of Bit-fields
#include <stdio.h> int main()
{
// Space optimized representation of the date printf("Size of date is %lu bytes\n",
struct date { sizeof(struct date));
// d has value between 0 and 31, so 5 bits struct date dt = { 31, 12, 2014 };
// are sufficient printf("Date is %d/%d/%d", dt.d, dt.m, dt.y);
int d : 5; return 0;
}
// m has value between 0 and 15, so 4 bits
// are sufficient
int m : 4;

int y;
};

You might also like