Download presentation
Presentation is loading. Please wait.
Published byCecily George Modified over 9 years ago
1
Computer Science 121 Scientific Computing Winter 2014 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 : too big >> 1 / 0 ans = Inf NaN : undefined >> 0 / 0 ans = 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 ans = 3.14159… >> ‘pi’ ans = pi
26
3.2 Text (Strings) For apostrophe, use two single quotes: >> ‘Why can’’t anything be simple?’ ans = Why can’t anything be simple? Don’t try to put a newline into quoted text: >> ‘Four score and seven years ago our Error: A MATLAB string constant is not terminated properly.
27
3.2 Text (Strings) Internally, Matlab (computer) stores text as sequence of numbers (sequence of sequence of bits), each representing a character: >> ‘foo’ + ‘bar’ ans = 200 208 225 With 1 byte, can represent 256 unique characters – okay for English, but not for other languages (e.g., thousands of Chinese characters). Unicode uses 31 bits, yielding ~65,000 chars.
28
3.3 Collections of Numbers and Plotting Sequences of numbers – a.k.a. vectors – are the most common kind of data in scientific computing Matlab uses square brackets to represent vectors: >> [1, 5, 7, 9] ans = 1 5 7 9
29
3.3 Collections of Numbers and Plotting Commas are optional: >> [1 5 7 9] ans = 1 5 7 9 Matlab’s fundamental power : operations on entire vectors at once: >> 3 * [1 5 7 9] ans = 3 15 21 27
30
A Note on Notation Q.: What is the difference between: >> 3 * [1 5 7 9] and >> 3.* [1 5 7 9] A.: None, because 3 is a scalar (single number)
31
Dot (.) in front operator indicates “element- by-element” operation. With scalar and vector, element-by-element is automatic, so dot isn’t needed With two vectors, dot is necessary for element-by-element: >> [1 5 7 9].^2 ans = 1 25 49 81 Q: How many tokens in [1 5 7 9].^2
32
Useful Vector Operations >> a = [1, 5, 7, 9]; >> length(a) ans = 4 >> sum(a) ans = 22 >> prod(a) ans = 315
33
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: rem, mod
34
Plotting >> time = [0 1 2 3.5 7]; >> temp = [93.5 90.6... 87.7 83.9 76.6]; >> plot(time, temp, ‘-o’) (additional values shown)
35
Constructing Sequences of Numbers Colon operator: >> colon(1,.5, 5) ans = 1.000 1.500 2.000 2.500 3.000 3.500 4.000 4.500 5.000 >> [1:.5:5] ans = % (same) >> colon(.1,.5, 2) ans =.1.6 1.1 1.6 % what about 2? Default increment is 1: >> [1:5] ans = 1 2 3 4 5
36
Goin’ down: >> [3:-.5:1] ans = 3.000 2.500 2.000 1.500 1.000 Concatenating vectors: >> [1:5 7:9] ans = 1 2 3 4 5 7 8 9 The empty vector: >> [1:5 []] ans = 1 2 3 4 5 Scalar as length-one vector: >> length(5) ans = 1
37
3.4: Booleans: True or False Boolean (true/false) values (bits) are useful everywhere in computer science Matlab reports true as 1, false as 0 >> isprime(7) ans = 1 Certain operators are inherently Boolean >> [ 3 4, 3 = 4, 3 == 4] ans = [1 0 1 0 0]
38
Boolean Operations on Vectors and Strings Can compare vectors, as long as they’re same length: >> [1 2 3] == [3 2 1] ans = [0 1 0] >> [1 2 3 4] == [1 2 3] Error: …
39
Boolean Operations on Vectors and Strings For string comparisons, want to compare whole string, not just letters >> ‘foo’ == ‘moo’ ans = [0 1 1] strcmp(‘foo’, ‘moo’) ans = 0 >> strcmp(‘bar’, ‘bar’) ans = 1 Unequal lengths → false (not error): >> strcmp(‘foo’, ‘foobar’) ans = 0
40
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) & (myhum >= 4) ans = 0 >> (mymath >= 1) & (mycsci >=1 | mymath >=2) ans = 1
41
Logical Operations
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.