Bit Manipulation - Bit Manipulation in The C Programming Language

Bit Manipulation in The C Programming Language

C has direct support for bitwise operations that can be used for bit manipulation. In the following examples, n is the index of the bit to be manipulated within the variable bit_fld, which is an unsigned char being used as a bit field. Bit indexing begins at 0, not 1. Bit 0 is the least significant bit.

Set a bit
bit_fld |= (1 << n)
Clear a bit
bit_fld &= ~(1 << n)
Toggle a bit
bit_fld ^= (1 << n)
Test a bit
bit_fld & (1 << n)

When using an array of bytes to represent set of bits, i.e., a bit array or bitset, the index of the byte in the array associated with a bit n can be calculated using division:

n / CHAR_BIT

where n is the index of the given bit and CHAR_BIT gives the number of bits in a C char.

The index of the bit within the byte indexed by the above can be calculated via a modulo operation:

n % CHAR_BIT

(Note: unsigned char is typically used in C to represent a byte and CHAR_BIT is most often 8 on modern processors. % is the C modulo operator.)

Read more about this topic:  Bit Manipulation

Famous quotes containing the words bit, manipulation, programming and/or language:

    Roast Beef, Medium, is not only a food. It is a philosophy. Seated at Life’s Dining Table, with the menu of Morals before you, your eye wanders a bit over the entrées, the hors d’oeuvres, and the things à la though you know that Roast Beef, Medium, is safe and sane, and sure.
    Edna Ferber (1887–1968)

    When we say “science” we can either mean any manipulation of the inventive and organizing power of the human intellect: or we can mean such an extremely different thing as the religion of science the vulgarized derivative from this pure activity manipulated by a sort of priestcraft into a great religious and political weapon.
    Wyndham Lewis (1882–1957)

    If there is a price to pay for the privilege of spending the early years of child rearing in the driver’s seat, it is our reluctance, our inability, to tolerate being demoted to the backseat. Spurred by our success in programming our children during the preschool years, we may find it difficult to forgo in later states the level of control that once afforded us so much satisfaction.
    Melinda M. Marshall (20th century)

    We might hypothetically possess ourselves of every technological resource on the North American continent, but as long as our language is inadequate, our vision remains formless, our thinking and feeling are still running in the old cycles, our process may be “revolutionary” but not transformative.
    Adrienne Rich (b. 1929)