# 1 Final Exam Schedule PostedIndex

• The Final Exam date is posted on the Course Home Page.
• For full mark credit, read the Test Instructions for important directions on how to enter your answers on the mark-sense forms.

# 2 Lecture Notes for This WeekIndex

## 2.2 From Blackboard Course DocumentsIndex

These documents have restricted distribution and cannot be put on the Course Home Page.

• 02.ppt - Data Representation
• Read: Character encoding: ASCII, Unicode, Line Endings
• Read: CPU Flags: slides 47-49, 53-54
• slide 54 has an error - change second-line 0100+0010 to be 0100+0110
• 03.ppt - Boolean Algebra and Digital Logic
• Ignore: Digital Logic

## 2.4 From the Classroom Whiteboard/ChalkboardIndex

• Your in-class notes go here.

• Review: Famous ASCII characters: `0D 0A 20 30 41 61 7F`
• Problems with all the 8-bit extended-ASCII character sets
• can’t have Latin1 French and Latin2 Polish in the same text file: why?
• same as ASCII, no endian-ness, multi-byte, full Unicode, may require more bytes than Unicode
• Shifting numbers right and left
• shifiting effect on two’s complement numbers: does it work?
• Arithmetic Right Shift vs. Logical Right Shift
• duplicate the top (carry) bit for Arithmetic Right Shift
• F4240h = 1,000,000(10)
• so F42400h = 1,000,000 * 16 = 16,000,000
• so F424h = 1,000,000/16 = 1000000 * 0.0625 = 100 * 625 = 62,500
• 03641100(8) = 1,000,000(10)
• so 036411000 = 1,000,000 * 8 = 8,000,000
• 1010(2) = 10(10)
• so 101000 = 10 * 2 * 2 = 40
• Bitwise Operators AND, OR, XOR, NOT (in Java: `& | ^ ~`)
• don’t confuse bitwise with logical: `&` with `&&`, `|` with `||`, or `~` with `!`
• if x=1, y=2 then x&y = 0 (no bits in common)
• if x=6, y=12 then x&y = 4 (one bit in common)
• XOR is Exclusive OR - A or B but not both
• true OR true is true
• true XOR true is false
• Conversions between upper/lower in ASCII using bitwise OR and AND:
• `'A' | ' ' = 'a'` (OR turns on the 20h bit, making it lower-case)
• `'a' & ~' ' = 'A'` (AND turns off the 20h bit, making it upper-case)
• Simplifying complex logic using Boolen Algebra - identities - deMorgan
1. simplify: `if ((x < y) && (y < z))` `||` `((x < y) && (y >=z ))`
• simplifies to just `if (x < y)` because:
• let `a = (x<y)` and `b = (y<z)`, therefore `b' = (y>=z)`
• rewrite `ab+ab' = a(b+b') = a(1) = a = (x<y)`
2. suppose a stale order means: `date > 120` and `amount > 0`
1. simplify: print unless stale
• unless stale means if NOT stale
• `print if NOT` `(date > 120 && amt > 0)`
• using deMorgan: `print if` `(date <= 120 || amt <= 0)`
2. simplify: `print unless` `(stale and amt < 0)`
• `print if NOT` `(stale && amt < 0)`
• `print if` `( !stale || amt >= 0)`
• `print if` `( date <= 120 || amt <= 0 || amt >= 0)`
• `print if` `( date <= 120 || TRUE )`
• therefore: always print (probably an error in the specifications!)
3. Show that `(xy + x'z + yz')' = y'(x+z')`
• `(x'+y')(x+z')(y'+z) -`- deMorgan
• `(x'x + x'z' + xy' + y'z')(y'+z) -`- expand first two expressions
• `( 0 + x'z' + xy' + y'z')(y'+z) -`- identities
• `x'y'z' + x'z'z + xy'y' + xy'z + y'y'z' + y'z'z -`- expand again
• `x'y'z' + 0 + xy' + xy'z + y'z' + 0 -`- identities
• `x'y'z' + y'z' + xy' + xy'z -`- regroup similar terms
• `y'z' + xy' -`- absorption rule
• `y'(x+z') -`- QED
• CPU Status flags: Zero, Sign, Carry, Overflow - Z S C V
• 4-bit binary carry: 1100+1100=1000
• 4-bit binary overflow: 0100+0100=1000
• 4-bit binary carry and overflow: 1000+1000=0000
• see 02.ppt
• CPU Flags: slides 47-49, 53-54
• slide 54 has an error - change second-line 0100+0010 to be 0100+0110
``````Author:
| Ian! D. Allen  -  idallen@idallen.ca  -  Ottawa, Ontario, Canada
| College professor (Free/Libre GNU+Linux) at: http://teaching.idallen.com/
| Defend digital freedom:  http://eff.org/  and have fun:  http://fools.ca/``````

Plain Text - plain text version of this page in Pandoc Markdown format

Author Ian! D. Allen