snick snack 1 cpsc 121: models of computation 2013w2 number representation steve wolfman, based on...
TRANSCRIPT
![Page 1: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/1.jpg)
snick
snack
1
CPSC 121: Models of Computation2013W2
Number Representation
Steve Wolfman, based on notes by Patrice Belleville and others
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
![Page 2: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/2.jpg)
Outline
• Prereqs, Learning Goals, and Quiz Notes
• Prelude: “Additive Inverse”
• Problems and Discussion– Clock Arithmetic and Two’s Complement– 1/3 Scottish and Fractions in Binary– Programs and Numbers– Programs as Numbers
• Next Lecture Notes
2
![Page 3: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/3.jpg)
Learning Goals: Pre-Class
By the start of class, you should be able to:– Convert positive numbers from decimal to binary
and back.
– Convert positive numbers from hexadecimal to binary and back.
– Take the two’s complement of a binary number.
– Convert signed (either positive or negative) numbers to binary and back.
– Add binary numbers.
3
![Page 4: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/4.jpg)
Learning Goals: In-Class
By the end of this unit, you should be able to:– Critique the choice of a digital representation
scheme—including describing its strengths, weaknesses, and flaws (such as imprecise representation or overflow) —for a given type of data and purpose, such as (1) fixed-width binary numbers using a two’s complement scheme for signed integer arithmetic in computers or (2) hexadecimal for human inspection of raw binary data.
4
![Page 5: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/5.jpg)
Where We Are inThe Big Stories
Theory
How do we model computational systems?
Now: showing that our logical models can connect smoothly to models of number systems.
Hardware
How do we build devices to compute?
Now: enabling our hardware to work with data that’s more meaningful to humans. (And once we have numbers, we can represent pictures, words, sounds, and everything else!)
5
![Page 6: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/6.jpg)
Motivating Problem
Understand and avoid cases like those at: http://www.ima.umn.edu/~arnold/455.f96/disasters.html
Death of 28 people caused by failure of an anti-missile system, caused in turn by the misuse of one representation for fractions.
Explosion of a $7 billion space vehicle caused by failure of the guidance system, caused in turn by misuse of a 16-bit signed binary value.
(Both representations are discussed in these slides.)
6
Photo by Philippe Semanaz (CC by/sa)
![Page 7: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/7.jpg)
Outline
• Prereqs, Learning Goals, and Quiz Notes
• Prelude: “Additive Inverse”
• Problems and Discussion– Clock Arithmetic and Two’s Complement– 1/3 Scottish and Fractions in Binary– Programs and Numbers– Programs as Numbers
• Next Lecture Notes
7
![Page 8: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/8.jpg)
Prelude: Unsigned Integers
We can choose any arrangement of Ts and Fs to represent numbers...
But, we might as well choose something convenient.
If we let F correspond to 0 and T to 1, then our representation is...
8
# p q r
0 F F F
1 F F T
2 F T F
3 F T T
4 T F F
5 T F T
6 T T F
7 T T T
![Page 9: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/9.jpg)
Prelude: Unsigned Integers
...base 2 numbers.When we represent
negative numbers, the choice is also arbitrary, but may as well be convenient:• Just one representation
for zero• Easy to tell negative
from positive (or non-negative?)
• Basic operations easy.
9
# p q r
0 0 0 0
1 0 0 1
2 0 1 0
3 0 1 1
4 1 0 0
5 1 0 1
6 1 1 0
7 1 1 1
But... What does it mean for basic operations to be “easy”?
![Page 10: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/10.jpg)
Prelude: Additive Inverse
The “additive inverse” of a number x is another number y such that x + y = 0.
What is the additive inverse of 3?
What is the additive inverse of -7?
10
We want to be able to add signed binary numbers. We need x + -x to be 0.
And, we want subtraction to be just addition “plus” negation.
![Page 11: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/11.jpg)
Outline
• Prereqs, Learning Goals, and Quiz Notes
• Prelude: “Additive Inverse”
• Problems and Discussion– Clock Arithmetic and Two’s Complement– 1/3 Scottish and Fractions in Binary– Programs and Numbers– Programs as Numbers
• Next Lecture Notes
15
![Page 12: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/12.jpg)
Problem: Clock Arithmetic
Problem: It’s 0500h. How many hours until midnight? Give an algorithm that requires a 24-hour clock, a level, and no arithmetic.
16
A level is a carpentry tool, essentially a straightedge that indicates when it is either horizontal or vertical.
![Page 13: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/13.jpg)
Clock Arithmetic
0500 is five hours from midnight.
1900 is five hours to midnight.
5 and 19 are “additive inverses” in clock arithmetic: 5 + 19 = 0.
So are any other numbers that are “across the clock” from each other.
17That’s even true for 12. Its additive inverse is itself!
![Page 14: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/14.jpg)
Clock Arithmetic Problem
It’s 18 hundred. Without using numbers larger than 24 in your calculations, what time will it be 22*7 hours from now? (Don’t multiply 22 by 7!)
a.0 hundred (midnight)
b.4 hundred
c.8 hundred
d.14 hundred
e.None of these18(Clock arithmetic is also known as
modular arithmetic in mathematics.)
![Page 15: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/15.jpg)
Clock Arithmetic: Food for Thought
0-3
-6
-9-12
If we wanted negative numbers on the clock,we’d probably put them “across the clock” from the positives.
After all, if 3 + 21 is already 0, why not put -3 where 21 usually goes?
19
![Page 16: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/16.jpg)
Unsigned Binary Clock
Here’s a 3-bit unsigned binary clock, numbered from 0 (000) to 7 (111).
20
000001
010
011
100
101
110
111
![Page 17: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/17.jpg)
Crossing the Clock
To “cross the clock”, go as many ticks left from the top as you previously went right from the top.
Here’s a clock labelled with 0 (000) to 3 (011) and -1 (111) to -4 (100).
21
000001
010
011
100
101
110
111
![Page 18: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/18.jpg)
Two’s Complement
Taking two’s complement of B = b1b2b3...bn:
1 1 1 ...1
- b1b2b3...bn
----------
x1x2x3...xn
+ 1 ----------
-B22
Flip the bits
Add one
![Page 19: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/19.jpg)
A Different View ofTwo’s Complement
Taking two’s complement of B = b1b2b3...bn:
1 1 1 ...1
- b1b2b3...bn
----------
x1x2x3...xn
+ 1 ----------
-B23
Flip the bits
Add one
1 1 1 ...1
+ 1
----------
1 0 0 0 ...0
- b1b2b3...bn
----------
-BOr... Just subtract from 100...0
![Page 20: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/20.jpg)
Two’s Complement vs. Crossing the Clock
Two’s complement with k bits:
Equivalent to subtracting from 100...000 with k 0s.
“Crossing the clock” with k bits:
Equivalent to subtracting from 100...000 with k 0s.
24Two’s complement turns numbers into their
“normal”, “cross-the-clock” additive inverses.
1 1 1 ...1
+ 1
----------
1 0 0 0 ...0
- b1b2b3...bn
----------
-B
000001
010
011100
101
110
111
![Page 21: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/21.jpg)
Problem: Why Two’s complement?
Why make the negation of 010 be 110? (In other words: why use the two’s complement scheme?)
a.010 + 110 already equals 0 (that is, 000).
b.110 isn’t being used for any other purpose.
c. 110 is the easiest negation to calculate.
000001
010
011
100
101
110
111
25
![Page 22: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/22.jpg)
Summary Questions (1 of 2)• With n bits, how many distinct values can we represent?
• What’s the smallest/largest n-bit unsigned binary integer?
• What’s the smallest/largest n-bit signed (using two’s complement) binary integer?
• Why the “extra” negative number?
• How many representations for each number do we have with unsigned/signed binary integers?
26
![Page 23: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/23.jpg)
Summary Questions (2 of 2)
• How do we tell if an unsigned binary integer is: negative, positive, zero?
• How do we tell if a signed binary integer is: negative, positive, zero?
• How do we negate a signed binary integer?
• On what value does this “negation” not behave like negation on integers?
• How do we perform the subtraction x – y?
27
![Page 24: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/24.jpg)
Outline
• Prereqs, Learning Goals, and Quiz Notes
• Prelude: “Additive Inverse”
• Problems and Discussion– Clock Arithmetic and Two’s Complement– 1/3 Scottish and Fractions in Binary– Programs and Numbers– Programs as Numbers
• Next Lecture Notes
28
![Page 25: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/25.jpg)
Problem: 1/3 Scottish
Problem: Can you be 1/3 Scottish?
29
![Page 26: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/26.jpg)
Problem: 1/3 Scottish
Problem: Can you be 1/3 Scottish?
30
To build a model, we must clearly specify the problem. Many problems admit multiple models that lead to fundamentally different results.
We’re going to use the model of parentage “endowing” 50% of each parent’s “ish-ness”. That’s a coarse, even silly model. (By that model, none of us are Canadian, since humans did not originate in Canada.)
Our model is handy for us, but it’s not necessarily what people’s identity is about!
![Page 27: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/27.jpg)
Can you be one-third Scottish?
Mom:??
Dad:??
Focus on Mom (and Mom’s Mom and so on).We’ll just make Dad “Scot” or “Not” as needed at each step.
![Page 28: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/28.jpg)
Can you be one-third Scottish?
Mom:2/3
Dad:Not
Mom:??
Dad:??
![Page 29: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/29.jpg)
Can you be one-third Scottish?
Mom:2/3
Dad:Not
Mom:1/3
Dad:Scot
Mom:??
Dad:??
![Page 30: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/30.jpg)
Can you be one-third Scottish?
Mom:2/3
Dad:Not
Mom:1/3
Dad:Scot
Dad:Not
Mom:1/3
Dad:Scot
And so on...
What’s happening here?
Mom:2/3
![Page 31: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/31.jpg)
Mom:2/3
Dad:Not
Mom:1/3
Dad:Scot
Mom:2/3
Dad:Not
Mom:1/3
Dad:Scot
Now, focus on Dad...We can represent fractions in binary by making “Scottish family trees”:
![Page 32: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/32.jpg)
Mom:0.75
Dad:Not
Mom:0.5
Dad:Scot
Mom:0.0
Dad:Scot
Here’s 0.375 in binary...
![Page 33: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/33.jpg)
“Fixed-Point” Binary Values
0.101101…2
-1 or “
one-
halfs
” pla
ce
2-2 o
r “on
e-qu
arte
rs” p
lace
2-3 o
r “on
e-ei
ghts
” pla
ce
2-4 o
r “on
e-si
xtee
nths
” pla
ce
2-5 o
r “on
e-th
irty-
seco
nds”
pla
ce
2-6 o
r “on
e-si
xty-
four
ths”
pla
ce
Many languages use “floating point” numbers (scientific notation in base 2, essentially) to represent “real numbers”: Java float and double, Racket inexact.
![Page 34: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/34.jpg)
“Fixed-Point” Binary Values
0.101101
![Page 35: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/35.jpg)
Problem: Base 10 vs. Base 2
Can we represent 1/9 with a finite number of digits in base 10 or base 2?
a.Yes (in both).
b.Yes in base 10, but not in base 2.
c.Yes in base 2, but not in base 10.
d.No (in both).
e.I don’t know.
39
![Page 36: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/36.jpg)
Problem: Base 10 vs. Base 2
Can we represent 1/8 with a finite number of digits in base 10 or base 2?
a.Yes (in both).
b.Yes in base 10, but not in base 2.
c.Yes in base 2, but not in base 10.
d.No (in both).
e.I don’t know.
40
![Page 37: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/37.jpg)
Problem: Base 10 vs. Base 2
Can we represent 1/5 with a finite number of digits in base 10 or base 2?
a.Yes (in both).
b.Yes in base 10, but not in base 2.
c.Yes in base 2, but not in base 10.
d.No (in both).
e.I don’t know.
41
![Page 38: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/38.jpg)
What’s Representable?
In base 10: Anything that, multiplied by some power of 10, becomes an integer can be represented with a finite number of digits with our fixed-point scheme.
In base 2: The same except multiplying by a power of 2.
42So why does it seem that base 10 can represent with a
finite number of digits anything that base 2 can?
![Page 39: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/39.jpg)
So... Computers Can’t Represent 1/3?
No! Using a different representation scheme (e.g., a rational number with a separate integer numerator and denominator), computers can perfectly represent 1/3!
(You know that from Racket!)
The point is: Representations that use a finite number of bits (all of them) have weaknesses. Know those weaknesses and their impact on your computations!
43
![Page 40: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/40.jpg)
Outline
• Prereqs, Learning Goals, and Quiz Notes
• Prelude: “Additive Inverse”
• Problems and Discussion– Clock Arithmetic and Two’s Complement– 1/3 Scottish and Fractions in Binary– Programs and Numbers– Programs as Numbers
• Next Lecture Notes
44
![Page 41: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/41.jpg)
What Doesn’t Work isNot Always Obvious (1 of 2)
Class Main { public static void main(String[] args) { // Let's add up 4 quarters. System.out.println("4 quarters gives us:"); System.out.println(0.25 + 0.25 + 0.25 + 0.25);
// Let's do something a hundred times. int i = 100; do { // Make i one smaller. i--; } while (i > 0);
System.out.println("Done!"); System.out.println("i ended up with the value: " + i); System.out.println("It went down by: " + (100 - i)); }}
45
![Page 42: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/42.jpg)
What Doesn’t Work isNot Always Obvious (2 of 2)
Class Main { public static void main(String[] args) { // Let's add up 10 dimes. System.out.println("10 dimes gives us:"); System.out.println(0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1); // Let's try do something a hundred times.. // but accidentally go forever int i = 100; do { // Make i one LARGER. Oops! i++; } while (i > 0);
System.out.println("Done!"); System.out.println("i ended up with the value: " + i); System.out.println("It went down by: " + (100 - i)); }}
46
![Page 43: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/43.jpg)
Number Representation Prediction
// Let's add up 10 dimes. System.out.println("10 dimes gives us:"); System.out.println(0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1); // Let's try do something a hundred times.. // but accidentally go forever int i = 100; do { // Make i one LARGER. Oops! i++; } while (i > 0);
47
What will this print?a.First 1.0 and then nothing because it runs forever.b.First 1.0 and then some other value, because it won’t run forever.c.First something OTHER than 1.0 and then nothing because it runs forever.d.First something OTHER than 1.0 and then some other value, because it won’t forever.e.None of these
![Page 44: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/44.jpg)
But Racket solves this…right?
Racket’s number representation scheme is flexible and powerful (but mostly not as “efficient” or “compact” as Java’s, which usually doesn’t matter!).
But no representation is perfect, and every representation could be more flexible.
;; What do these evaluate to?
(+ 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1)
(* (sqrt 2) (sqrt 2))
48
![Page 45: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/45.jpg)
Outline
• Prereqs, Learning Goals, and Quiz Notes
• Prelude: “Additive Inverse”
• Problems and Discussion– Clock Arithmetic and Two’s Complement– 1/3 Scottish and Fractions in Binary– Programs and Numbers– Programs as Numbers
• Next Lecture Notes
49
![Page 46: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/46.jpg)
Preface: Java Byte Code
Programs in the Java programming language are compiled to a language called “byte code” that is then interpreted on a particular computer.
Why? Byte code is hard for humans to write, read, and understand... but it’s easy to write a program that reads and executes it (compared to writing a program to directly read and execute Java source code).
So, if you create a new type of computer tomorrow, and I want to run Java code on it, I don’t have to write a program that works on your computer and knows how to execute Java; I just need to write a program that knows how to execute byte code.
Java byte code is also designed to be compact so it’s cheap to transmit across the internet.
![Page 47: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/47.jpg)
Problem: Java Byte Code
Problem: When compiled to bytecode, i = 100 might be “push 100; store in variable 1”. The “opcode” for bipush (push a byte) is 1610. The opcode for istore_1 is 6010. Here’s a typical “hex” view of ~1/5th of the previous program’s byte code. Where is i = 100?
51
a
db
c
e: None of these.
b
![Page 48: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/48.jpg)
Problem: Binary Byte Code
Why would the same task (finding a particular snippet of code in a bytecode file) be much more difficult if the file were represented in binary?
a. Because we would have to translate all the opcodes and values to binary.
b. Because many bytecode files would have no binary representation.
c. Because the binary representation of the file would be much longer.
d. Because data like 1100100 (100 in base 2) might not show up as the sequence of numbers 1 1 0 0 1 0 0.
e. It wouldn’t be much more difficult.
52
![Page 49: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/49.jpg)
Problem: Decimal Byte Code
Why would the same task (finding a particular snippet of code in a bytecode file) be much more difficult if the file were represented in decimal?
a. Because we would have to translate all the opcodes and values to decimal.
b. Because many bytecode files would have no decimal representation.
c. Because the decimal representation of the file would be much longer.
d. Because data like 100 might not show up as the sequence of numbers 1 0 0.
e. It wouldn’t be much more difficult.
53
![Page 50: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/50.jpg)
Outline
• Prereqs, Learning Goals, and Quiz Notes
• Prelude: “Additive Inverse”
• Problems and Discussion– Clock Arithmetic and Two’s Complement– 1/3 Scottish and Fractions in Binary– Programs and Numbers– Programs as Numbers
• Next Lecture Notes
54
![Page 51: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/51.jpg)
Learning Goals: In-Class
By the end of this unit, you should be able to:– Critique the choice of a digital representation
scheme—including describing its strengths, weaknesses, and flaws (such as imprecise representation or overflow) —for a given type of data and purpose, such as (1) fixed-width binary numbers using a two’s complement scheme for signed integer arithmetic in computers or (2) hexadecimal for human inspection of raw binary data.
55
![Page 52: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/52.jpg)
Next Lecture Learning Goals: Pre-Class
By the start of class, you should be able to:– Use truth tables to establish or refute the
validity of a rule of inference.– Given a rule of inference and propositional
logic statements that correspond to the rule’s premises, apply the rule to infer a new statement implied by the original statements.
56
![Page 53: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/53.jpg)
Next Lecture Prerequisites
Read Section 1.3 (Epp 3rd ed) or 2.3 (Epp 4th ed).
Complete the open-book, untimed quiz on Connect that is due before next class.
57
![Page 54: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/54.jpg)
snick
snack
Some Things to Try...
(on your own if you have time, not required)
58
![Page 55: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/55.jpg)
59
Representing Characters
![Page 56: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/56.jpg)
Problem: Weighty Numbers
Problem: You have a balance scale and four weights. You may choose the mass of the weights, as long as they’re in whole units of grams. What’s the largest number n such that you can exactly measure every weight 0…n?
60
?g ?g?g?g
![Page 57: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/57.jpg)
61
Problem: Representing Data
Problem: Devise two different ways to represent each of the following with bits:• black-and-white images• text• the shape of your face
![Page 58: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/58.jpg)
Problem: 256-hour Clock Arithmetic
Problem: Imagine you’ve built a computer that uses 256-hour clock faces, each with a single dial, as storage units. How would you store, add, subtract, and negate integers?
62
![Page 59: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/59.jpg)
Concept Q: 256-hour Clock Arithmetic
Java has a type called “byte” that is an 8-bit signed integer. What will the following code print?
byte b = 70;b = b + 64;b = b + 64;b = b + 64;
a. A positive number, greater than 70.b. 70.c. A positive number, less than 70.d. 0.e. A negative number.
63
![Page 60: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/60.jpg)
Problem: Number Rep Breakdown
Problem: Explain what’s happening in each of these…
64
![Page 61: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/61.jpg)
Program for Introductions: Testing
Java version with 100: 9900
Java version with 8675309: 265642364
Java version with 1526097757: -645820308
Reminder: this is to calculate n*(n-1), the number of introductions for a group of size n.65
![Page 62: Snick snack 1 CPSC 121: Models of Computation 2013W2 Number Representation Steve Wolfman, based on notes by Patrice Belleville and others This work is](https://reader035.vdocuments.us/reader035/viewer/2022062309/5697bfd01a28abf838caa5cf/html5/thumbnails/62.jpg)
Program for Introductions: Testing
Racket version with 100: 9900
Racket version with 8675309: 75260977570172
Racket version with 1526097757: 2328974362394333292
Reminder: this is to calculate (* n (- n 1)), the number of introductions for a group of size n.66