# Bit Fields & Bitwise Operations - WPI

Bit Fields & Bitwise Operations CS-2301, System Programming for Non-Majors (Slides include materials from The C Programming Language, 2nd edition, by Kernighan and Ritchie and from C: How to Program, 5th and 6th editions, by Deitel and Deitel) CS-2301, B-Term 2009 Bit Fields & Bitwise Ope rations 1 Bitwise Operations See 2.9 and 6.9 in Kernighan & Ritchie Many situation, need to operate on the bits of a data word Register inputs or outputs Controlling attached devices Obtaining status Especially ECE-2801 and ECE-3803 CS-2301, B-Term 2009 Bit Fields & Bitwise Ope rations 2 Review Bitwise Operations in Integers

Corresponding bits of both operands are combined by the usual logic operations. & AND ~ Complement Result is 1 if both operand bits are 1 | OR Result is 1 if either operand bit is 1 ^ Exclusive OR Result is 1 if operand bits are different CS-2301, B-Term 2009 Each bit is reversed << Shift left Multiply by 2 >> Shift right Divide by 2 Apply to all kinds of integer types: Signed and unsigned 3

Bitchar, Fields &short, Bitwise Ope int, long, long long rations Examples a 1 1 1 1 0 0 0 0 unsigned int c, a, b; c = a & b; c = a | b; c = a ^ b; c = ~a; b 1 0 1 0 1 0 1 0 c = a << 2; c = a >> 3; CS-2301, B-Term 2009 Bit Fields & Bitwise Ope rations 4 Right Shift is Tricky unsigned int c, a; c = a >> 3;

signed int c, a, b; c = b >> 3; c = a >> 3; CS-2301, B-Term 2009 a 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 b 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 a 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 Bit Fields & Bitwise Ope rations 5 Two Approaches Traditional C Use #define and a lot of bitwise operations Modern Use bit fields CS-2301, B-Term 2009 Bit Fields & Bitwise Ope rations 6

Example Printer Status Register ty er p Em p Pa in an w Lo e Cl pe m pa ja

k r Traditional C definition of bit fields #define #define #define #define CS-2301, B-Term 2009 EMPTY JAM LOW_INK CLEAN 01 02 16 64 Bit Fields & Bitwise Ope rations 7 Example Printer Status Register (cont.) ty

er p Em p Pa in an w Lo e Cl pe m pa ja k r

Traditional bit fields (continued) char status; if (status == (EMPTY | JAM)) ...; if (status == EMPTY || status == JAM) ...; while (! status & LOW_INK) ...; int flags |= CLEAN /* turns on CLEAN bit */ int flags &= ~JAM /* turns off JAM bit */ CS-2301, B-Term 2009 Bit Fields & Bitwise Ope rations 8 Traditional Bit Definitions Used very widely in C Including a lot of existing code No checking You are on your own to be sure the right bits are set Machine dependent Need to know bit order in bytes, byte order in words Integer fields within a register Need to AND and shift to extract Need to shift and OR to insert CS-2301, B-Term 2009

Bit Fields & Bitwise Ope rations 9 Example Printer Status Register (cont.) ty er p Em p Pa in an w Lo e Cl coun t

pe m pa ja k r An integer field (traditional style) #define COUNT (8|16|32|64|128) int c = (status & COUNT) >> 3; status |= (c << 3) & COUNT; CS-2301, B-Term 2009 Bit Fields & Bitwise Ope rations 10 Modern Bit-Field Definitions See Kernighan & Ritchie, 6.9 Like a struct, except Each member is a bit-field within a word Accessed like members of a struct Fields may be named or unnamed

Machine-dependent Order of bits in word Size of word CS-2301, B-Term 2009 Bit Fields & Bitwise Ope rations 11 Modern Bit-field Definitions ty er p Em p Pa in an w Lo

e Cl pe m pa ja k CS-2301, B-Term 2009 Bit Fields & Bitwise Ope rations 12 r struct statusReg { unsigned int emptyPaperTray :1; unsigned int paperJam :1; :2; unsigned int lowInk :1; :1;

unsigned int needsCleaning :1; :1; }; Example Printer Status Register (cont.) pe m pa ja r Bit Fields & Bitwise Ope rations ty er k struct statusReg { unsigned int emptyPaperTray :1; unsigned int paperJam :1; :1; unsigned int count

:5; :1; unsigned int lowInk :1; :1; unsigned int needsCleaning :1; :1; }; CS-2301, B-Term 2009 p Em p Pa in an w Lo e Cl coun t 13

Modern Bit-fields (continued) struct statusReg s; if (s.empty && s.jam) ...; while(! s.lowInk) ...; s.needsCleaning = true; s.Jam = false; int c = s.count; s.count -= 1; CS-2301, B-Term 2009 Bit Fields & Bitwise Ope rations 14 Questions about Bit Fields? CS-2301, B-Term 2009 Bit Fields & Bitwise Ope rations 15

## Recently Viewed Presentations

• However, when the Vikings refused to trade iron weapons to the local Beothuk war erupted between the two peoples. Thereafter, the Vikings abandoned settlement of the New World altogether. Europeans returnedâ€”this time the Englishâ€”by the early 17th Century. Wisely the...
• Legal Landscape of Farm Employment Law. Rachel Armstrong. Farm Commons provides the proactive legal resources that sustainable farmers need to become the stable, resilient foundation of a community based food system. My name is Rachel Armstrong, I'm the founder and...
• Analgesic actions equivalent to those of codeine. Long-acting analgesic. Immediate-release . Controlled-release (OxyContin) Abuse: crushes and snorts or injects medication. 2010 OP formulation much harder to crush and does not dissolve into an injectable solution to decrease risk of abuse
• 40X. Largest field of view. Pluck 1 Elodea frond & place it on a microscope slide. Add 1 drop of water & then a coverslip. Place the slide on the stage & bring the image into focus under LOW power.
• Radcliffe-Martin, Coakes and Sugden (2000) Explicit versus Tacit Knowledge. Tacit knowledge: Subconsciously understood or applied . Difficult to articulate and often context-specific. Developed from direct action and experience . ... Keith Toh Company:
• The track inspection will be carried out through track recording car (TRC) fitted with high resolution cameras capable of recording video at high speed. The track geometry & condition of track components recorded through video camera will be transmitted to...
• Adding the review of Progress meeting (weekly) to Abyasa. The web address for Abyasa is: https://sblpartnership.chester.ac.uk /. As a mentor you will be invited to join . Abyasa, by the AT. The Abyasa Login screen looks like this .
• A recommendation to change the boundaries, or An implied need to change the boundaries Any changes will be decided by MVDC (and ultimately DCLG) based on their assessment of District-wide need in relation to Government housing development targets DRAFT Westcott...