Download presentation
Presentation is loading. Please wait.
Published byCamron Campbell Modified over 9 years ago
1
Computer Science 121 Scientific Computing Winter 2016 Chapter 3 Simple Types: Numbers, Text, Booleans
2
3.1 The Organization of Computer Memory Computers store information as bits : sequences of zeros and ones –0 / 1 –true / false –on / off –yes/no Why base 2 (binary) - vs. base 10 (decimal)? (Note: book misleadingly uses “Arabic” to mean base 10) For an N-bit sequence, we have 2 N possible values
3
Binary-to-Decimal Conversion To convert from binary to decimal – Start from right – Multiply 0,1 by powers of two (1, 2, 4, 8, …) – Sum of these products is decimal equivalent E.g., 1 1 0 1 2 = ??? 10
4
Binary-to-Decimal Conversion To convert from binary to decimal – Start from right – Multiply 0,1 by powers of two (1, 2, 4, 8, …) – Sum of these products is decimal equivalent E.g., 1 1 0 1 2 = ??? 10 1 * 2 0 = 1
5
Binary-to-Decimal Conversion To convert from binary to decimal – Start from right – Multiply 0,1 by powers of two (1, 2, 4, 8, …) – Sum of these products is decimal equivalent E.g., 1 1 0 1 2 = ??? 10 1 * 2 0 = 1 +0 * 2 1 = 0
6
Binary-to-Decimal Conversion To convert from binary to decimal – Start from right – Multiply 0,1 by powers of two (1, 2, 4, 8, …) – Sum of these products is decimal equivalent E.g., 1 1 0 1 2 = ??? 10 1 * 2 0 = 1 +0 * 2 1 = 0 +1 * 2 2 = 4
7
Binary-to-Decimal Conversion To convert from binary to decimal – Start from right – Multiply 0,1 by powers of two (1, 2, 4, 8, …) – Sum of these products is decimal equivalent E.g., 1 1 0 1 2 = ??? 10 1 * 2 0 = 1 +0 * 2 1 = 0 +1 * 2 2 = 4 +1 * 2 3 = 8
8
Binary-to-Decimal Conversion To convert from binary to decimal – Start from right – Multiply 0,1 by powers of two (1, 2, 4, 8, …) – Sum of these products is decimal equivalent E.g., 1 1 0 1 2 = ??? 10 1 * 2 0 = 1 +0 * 2 1 = 0 +1 * 2 2 = 4 +1 * 2 3 = 8 ____________ 13
9
13mod 2 = 1 13 ÷ 2 = 6 6mod 2 = 0 6 ÷ 2 = 3 3mod 2 = 1 3 ÷ 2 = 1 1mod 2 = 1 1 ÷ 2 = 0 ___________ 1 1 0 1 Decimal-to-Binary Conversion To convert from decimal to binary 1. Take remainder of decimal number / 2 2. Write down remainders right-to-left 3. If decimal number is zero, we’re done 4. Divide decimal number by 2 5. Go to step 1.
10
Sign/Magnitude Notation Bit sequences are typically organized into eight-bit chunks called bytes : 8 bits → 2 8 = 256 possible values Can use leftmost bit for sign (+/-) E.g., 00001111 2 = 15 10 ; 10001111 = -15 10 Yields 128 negative, 128 positive values – but this means we have +/- 0 (10000000, 00000000), wasting one value! So use two’s complement
11
Two’s Complement Notation To negate a binary number: Flip the bits Add 1 00001111 11110000 11110001 Nice features Leftmost 1 still means negative Don’t waste a value (256 unique values, one zero) Can do subtraction as addition
12
Two’s Complement Subtraction 00001111 +11110001 ________________________________ 15 – 15
13
Two’s Complement Subtraction 00001111 +11110001 ________________________________ 0
14
15 – 15 Two’s Complement Subtraction 1 00001111 +11110001 ________________________________ 0 0
15
15 – 15 Two’s Complement Subtraction 1 1 00001111 +11110001 ________________________________ 000
16
15 – 15 Two’s Complement Subtraction 11 1 00001111 +11110001 ________________________________ 0000
17
15 – 15 Two’s Complement Subtraction 111 1 00001111 +11110001 ________________________________ 00000
18
Two’s Complement Subtraction 11111 00001111 +11110001 ________________________________ 000000 15 – 15
19
Two’s Complement Subtraction 1 11111 00001111 +11110001 ________________________________ 0000000 15 – 15
20
Two’s Complement Subtraction 1 1 11111 00001111 +11110001 ________________________________ 0 0000000 15 – 15 (Leftmost carry disappears)
21
Floating-Point Numbers Numbers containing a decimal point Original decimal-point notation had “fixed” point (e.g., two digits from right for $) With floating-point, decimal point “floats”
22
Floating-Point Numbers General form: mantissa e exponent avogadrosNumber = 6.023e23 plancksConstant = 6.626196e-34 Double precision float (a.k.a. double): 53 bits for mantissa, 11 for exponent (IEEE 754 standard) Default exponent = 0 ( 3.14 = 3.14e0 )
23
Special Floating-Point Values inf : bigger than any actual number Python can handle: >>> float('inf') > 100000000000000000000 True >>> 1e99999 inf nan : “not a number”; i.e., undefined >>> float('inf') / float('inf') nan
24
3.2 Text (Strings) Bits can be interpreted any way we want –Sign/magnitude integer –Two’s-complement integer –IEEE 754 double-precision –Integer representing an entry in a table of characters (Google on ascii table)
25
3.2 Text (Strings) Need to distinguish text from program code: use single quotes (c.f. English: “He said ‘hello’ to everyone in the room.”) >>> pi 3.141592653589793 >>> "pi" 'pi'
26
Double vs. single quotes Both will work, as long as you're consistent For apostrophe, use single quote inside double quotes: >>> "Why can't anything be simple?" "Why can't anything be simple?" Don’t try to put a newline into quoted text: >>> "Four score and seven years ago our SyntaxError: EOL while scanning string literal
27
String formatting Concatenation via plus: >>> "Hello " + "and goodbye" Hello and goodbye Mixing in numbers with str : >>> "NumPy uses " + str(pi) + " for pi." 'NumPy uses 3.141592653589793 for pi.'
28
3.3 Collections of Numbers and Plotting Sequences of numbers – a.k.a. arrays – are the most common kind of data in scientific computing NumPy uses array() function with square brackets to represent arrays: >>> array([1, 5, 7, 9]) array([1, 5, 7, 9])
29
The Fundamental Power of NumPy Operations on entire vectors at once: >>> 3 * array([1, 5, 7, 9]) array([ 3, 15, 21, 27]) >>> x = linspace(0,1,5) >>> x array([ 0., 0.25, 0.5, 0.75, 1.]) >>> x**2 array([ 0., 0.0625, 0.25,0.5625, 1.])
30
Useful Vector Operations >>> len(x) 5 >> sum(x) 2.5 >> prod(array([1,3,5,7,9])) 945
31
Other Common Operations Sign-related: abs, sign Exponential: exp, log, log10, log2 Trig: sin, cos, tan, asin, acos, atan, sinh, cosh, tanh Fraction-to-integer: round, floor, ceil, fix Remainders: mod, % >>> mod(3,2) 1 >>> 3 % 2 1
32
Plotting with Matplotlib >>> from matplotlib.pyplot import * >>> time = array([0, 1, 2, 3.5, 7]) >>> temp = [93.5, 90.6, 87.7, 83.9, 76.6] >>> plot(time, temp, "-o"), show() (additional values shown)
33
Constructing Sequences of Numbers linspace : >>> linspace(1,.5, 5) array([1., 0.875, 0.75, 0.625, 0.5]) arange : >>> arange(6) array([0, 1, 2, 3, 4, 5]) >>> arange(5,10) array([5, 6, 7, 8, 9]) WTF?
34
Constructing Sequences of Numbers linspace : >>> linspace(1,.5, 5) array([1., 0.875, 0.75, 0.625, 0.5]) arange : >>> arange(6) array([0, 1, 2, 3, 4, 5]) >>> arange(5,10) array([5, 6, 7, 8, 9]) Off-by-One will you be!
35
Goin’ down: >>> linspace(5,0,4) array([ 5., 3.333, 1.667, 0.]) >>> arange(3,0,-1) array([3, 2, 1]) Concatenating with append : >>> a = linspace(1,2,3) >>> append(a, array([4,5])) array([ 1., 1.5, 2., 4., 5. ]) >>> a array([ 1., 1.5, 2. ])
36
3.4: Booleans: True or False Boolean (true/false) values are useful everywhere in computer science: >>> 3 < 7 True >>> pi > 2*pi False G. Boole (1815-1864)
37
Booleans with Arrays and Strings Arrays: >>> arange(5) < 2 array([ True, True, False, False, False], dtype=bool) >>> linspace(0,1,3) == array([0,.5,.99]) array([ True, True, False,], dtype=bool) Strings: >>> "Hello" == "Goodbye" False >>> "Hello" > "Goodbye" True
38
Logical Operations Often need to combine several comparisons –“at least 2 quantitative courses and at least 4 humanities courses” –“one MATH course and another math or CSCI course >>> mymath = 1; mycsci = 2 >>> myart = 1; mymusic = 1; myfrench = 1 >>> myquant = mymath + mycsci >>> myhum = myart + mymusic + myfrench >>> (myquant >= 2) and (myhum >= 4) False >>> (mymath >= 1) and (mycsci >=1 or mymath >=2) True
39
Logical Operations
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.