Presentation is loading. Please wait.

Presentation is loading. Please wait.

Computer Science 121 Scientific Computing Winter 2016 Chapter 3 Simple Types: Numbers, Text, Booleans.

Similar presentations


Presentation on theme: "Computer Science 121 Scientific Computing Winter 2016 Chapter 3 Simple Types: Numbers, Text, Booleans."— Presentation transcript:

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


Download ppt "Computer Science 121 Scientific Computing Winter 2016 Chapter 3 Simple Types: Numbers, Text, Booleans."

Similar presentations


Ads by Google