Bit fields allow packing of data into a structure to save memory by defining individual bit fields within an integer. There are two bit shift operators in C - left shift (<<) which moves bits left, and right shift (>>) which moves bits right. Bit fields are useful for things like packing multiple boolean flags, reading compact file formats, and storing non-standard data types efficiently.