bit fields bitwise operations n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Bit Fields & Bitwise Operations PowerPoint Presentation
Download Presentation
Bit Fields & Bitwise Operations

Loading in 2 Seconds...

play fullscreen
1 / 15

Bit Fields & Bitwise Operations - PowerPoint PPT Presentation


  • 187 Views
  • Uploaded on

Bit Fields & Bitwise Operations. CS-2303 System Programming Concepts (Slides include materials from The C Programming Language , 2 nd edition, by Kernighan and Ritchie and from C: How to Program , 5 th and 6 th editions, by Deitel and Deitel). Bitwise Operations.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Bit Fields & Bitwise Operations' - cassandra


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
bit fields bitwise operations

Bit Fields & Bitwise Operations

CS-2303System Programming Concepts

(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)

Bit Fields & Bitwise Operations

bitwise operations
Bitwise Operations

See §2.9 and §6.9 in K&RSee §10.9 in D&D

Many situations, 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

Bit Fields & Bitwise Operations

review bitwise operations in integers
Review – Bitwise Operations in Integers

& – AND

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

~ – Complement

Each bit is reversed

<< – Shift left

Multiply by 2

>> – Shift right

Divide by 2

Corresponding bits of both operands are combined by the usual logic operations.

Apply to all kinds of integer types:–Signed and unsignedchar, short, int, long, long long

Bit Fields & Bitwise Operations

examples
Examples

unsigned int c, a, b;

c = a & b;

c = a | b;

c = a ^ b;

c = ~a;

c = a << 2;

c = a >> 3;

b

a

1

1

1

0

1

1

0

1

0

1

0

0

1

0

0

0

Bit Fields & Bitwise Operations

right shift is tricky
Right Shift is Tricky

unsigned int c, a;

c = a >> 3;

signed int c, a, b;

c = b >> 3;

c = a >> 3;

a

a

b

1

1

0

1

1

1

1

0

1

1

1

1

0

0

0

1

0

0

0

0

0

0

1

0

0

1

1

1

1

1

1

0

1

1

1

1

0

0

0

0

0

1

0

0

0

0

0

1

Bit Fields & Bitwise Operations

two approaches
Two Approaches
  • Traditional C
      • Use #define and a lot of bitwise operations
  • Modern
      • Use bit fields

Much more frequent in real world!

Bit Fields & Bitwise Operations

example printer status register
Example – Printer Status Register

Traditional C definition of bit fields

#define EMPTY 01

#define JAM 02

#define LOW_INK 16

#define CLEAN 64

Clean

Low ink

Paper jam

Empty paper

Bit Fields & Bitwise Operations

example printer status register cont
Example – Printer Status Register (cont.)

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 */

Clean

Low ink

Paper jam

Empty paper

Bit Fields & Bitwise Operations

traditional bit definitions
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

Bit Fields & Bitwise Operations

example printer status register cont1
Example – Printer Status Register (cont.)

An integer field (traditional style)

#define COUNT (8|16|32|64|128)

int c = (status & COUNT) >> 3;

status |= (c << 3) & COUNT;

count

Clean

Low ink

Paper jam

Empty paper

Bit Fields & Bitwise Operations

modern bit field definitions
“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

Bit Fields & Bitwise Operations

modern bit field definitions1
Modern Bit-field Definitions

struct statusReg {unsigned int emptyPaperTray :1;unsigned int paperJam :1; :2; unsigned int lowInk :1; :1;unsigned int needsCleaning :1; :1;

};

Clean

Low ink

Paper jam

Empty paper

Bit Fields & Bitwise Operations

example printer status register cont2
Example – Printer Status Register (cont.)

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;

};

count

Clean

Low ink

Paper jam

Empty paper

Bit Fields & Bitwise Operations

modern bit fields continued
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;

Bit Fields & Bitwise Operations

questions about bit fields

Questions about Bit Fields?

Bit Fields & Bitwise Operations