* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download Subject - Western Connecticut State University
Survey
Document related concepts
Transcript
Arithmetics Computer Architecture CS 215 Data Representation Method of storing data using binary codes Fixed Point Numbers Floating Point Numbers Overflow Fixed Point Numbers Range Distance between highest and lowest values Precision Distance between two adjacent values Error Half the precision Fixed Point Numbers Example: Assume three digit unsigned decimal numbers Lowest value: 0.00 Highest value: 9.99 Range: [0.00, 9.99] = 9.99 Precision: 1.23 – 1.22 = 0.01 Error: 0.01 / 2 = 0.005 Associate Law of Algebra & Digital Representations Assume one digit numbers Range: [-9, 9] Try … 7 + 4 – 3 7 + (4 – 3) = 7 + 1 = 8 (7 + 4) – 3 = 11 - 3 = Overflow! Oops! Associate Law of Algebra & Digital Representations Either identify overflow and terminate process, or … Repeat computation with higher precision numbers Radix Number Systems Radix = Base Numbers of possible choices for each digit Most systems use base 2 while many calculators use base 10 internally Octal Base 8 Hexadecimal Base 16 Radix Number Systems Weighted position code Polynomial method of conversion Value i m bi k n 1 i Radix Number Systems 1234.567 Most significant digit Least significant digit Converting Among Radices Converting integer part Remainder method Converting fractional part Multiplication method Remainder Method (23)10 = (10111)2 Integer 23/2 = 11 11/2 = 5 5/2 = 2 2/2 = 1 1/2 = 0 Remainder 1 1 1 0 1 Multiplication Method (.375)10 = (.011)2 .375 x 2 = 0.75 .75 x 2 = 1.5 .5 x 2 = 1.0 Try this … Convert the following to radix 2 Show all work! 1. 2. 3. (123.875)10 (11.01)10 (10.2)10 Non-terminating Fractions Converting (.2)10 to a radix 2 .2 x 2 = 0.4 .4 x 2 = 0.8 .8 x 2 = 1.6 .6 x 2 = 1.2 .2 x 2 = 0.4 And so on … Signed Fixed Point Numbers Encoding Schemes … Signed Magnitude One’s Compliment Two’s Compliment Excess Representation Binary Coded Decimal Signed Magnitude Aka sign & magnitude First bit for sign 0 is positive, 1 is negative Remaining bits for absolute magnitude Two different zeros (+0 and –0) 28 – 1 = 255 different numbers (+12)10 = (00001100)2 One’s Compliment Method Negate the positive of the number Compliment all of the bits Not commonly used Difficult for comparisons (2 zeros) 28 – 1 = 255 different numbers Two’s Compliment Method Negate the positive of the number Compliment all of the bits Add binary 1 Discard any carry-out Only one zero 28 = 256 different numbers Excess Representation Aka biased representation Number is treated as unsigned Bias is lowest value in the range Shifted in value by subtracting bias from it Only one zero 28 = 256 different numbers Excess 127 … (-127)10 = (00000000)2 Try this … Convert the following numbers to one’s compliment, two’s compliment and excess 127 64 75 -101 0 FYI Binary Coded Decimal Each decimal digit gets four bits 9’s compliment Subtract each digit from 9 10’s compliment Add 1 to the 9’s compliment FYI Binary Coded Decimal 9’s & 10’s compliment 0000 0101 0001 0000 (0)10 (5)10 (1)10 (0)10 What would (–510)10 look like in 9’s compliment form? 10’s Compliment? Floating Point Numbers Allows for a large range of expressible numbers using a small quantity of digits Uses different digits for precision and range Exponent Ex. +6.023 x 1023 Mantissa (significand) Range & Precision To increase range … Use fewer digits for mantissa, more for exponent Reduces precision Or … Increase base Increases precision of smaller numbers; decrease precision of larger numbers Normalization & the Hidden Bit All floating point numbers are normalized Radix point is set to right of the leftmost nonzero digit (in base 2) This results in a 1 as the leftmost digit in the mantissa Dropping this 1 (hidden bit) increases precision Normalization & the Hidden Bit Normalize and account for a hidden bit in the following … 0.3 x 102 Floating Point Example Mantissa Signed magnitude form Base 2 Three hexadecimal digits Exponent Three bits Base 2 Excess-4 Simplifies addition & subtraction Floating Point Example What would (358)10 look like in our format? Floating Point Example Step 1: Convert to base 16 Integer Remainder 358/16 22 6 22/16 1 6 1/16 0 1 (358)10 = (166)16 Floating Point Example Step 2: Normalize (0 0 0 10 1 1 0 0 1 1 0)16 x 20 = (. 10 1 1 0 0 1 1)16 x 29 Hidden bit Step 3: Represent exponent using bits 011 Excess 4 + 1 0 0 111 (+3)10 (+4)10 Floating Point Example Step 4: Express mantissa using bits 011001100000 Result: 0111011001100000 Sign bit Exponent Mantissa Error in Floating Point Numbers In our example … The base (b) is 2 There are 3 significant digits (s) The range of exponents [m, M] is [-22, 221] Error in Floating Point Numbers 5 characteristics … Number of representable numbers Number with largest magnitude Number with smallest magnitude Largest gap between successive numbers Smallest gap between successive numbers FYI Representable Numbers 2 (( M m) 1) (b 1) b s 1 1 Sign bit Number of exponents First digit of fraction Remaining digits of fraction Zero FYI Largest Magnitude Largest exponent bM Largest fraction All 1’s, or … (1 - b-s) Largest magnitude is … bM x (1 - b-s) FYI Smallest Magnitude Smallest exponent bm Smallest non-zero normalized fraction Which is 1, or … b-1 Smallest magnitude is … bm b-1 = bm-1 FYI Largest Gap Largest exponent, and … Least significant bit changes bM x b-s = bM-s FYI Smallest Gap Smallest exponent, and … Least significant bit changes bm x b-s = bm-s FYI In our example … Largest magnitude bM x (1 - b-s) = 21 x (1 - 2-3) = 7/4 Largest gap Smallest gap Smallest magnitude bM-s = 21-3 = 1/4 bm-s = 2-2-3 = 1/32 bm-1 = 2-2-1 = 1/8 Representable numbers 2 x ((M - m) + 1) x (b - 1) x bs-1 + 1 = 2 x ((1 - (-2)) + 1) x (2 - 1) x 23-1 + 1 = 33 FYI Error in Floating Point Numbers Relative error is approximately the same for all numbers b M s M s b (1 b ) ms b m s b (1 b ) s b s 1 b 1 s b 1 Unsigned Multiplication x 1 0 0 1 1 0 1 0 0 0 1 1 1 1 0 1 1 1 0 1 0 0 0 1 1 1 0 1 1 Add Shift, then add Shift Shift, then add 1 1 1 Unsigned Multiplication m3 m2 m1 m0 4-bit Adder c a3 a2 a1 a0 Shift & Add Control Logic q3 q2 q1 q0 Unsigned Multiplication C A Q 0 0 0 0 0 1 0 1 1 0 0 1 1 0 1 0 1 1 0 1 0 1 1 1 1 0 1 Add M to A Shift 1 0 0 0 1 1 1 0 0 1 1 1 0 1 1 1 1 0 Add M to A Shift 0 0 1 0 0 1 1 1 1 Shift 1 0 0 0 0 1 1 0 0 0 1 1 1 1 1 1 1 1 Add M to A Shift Multiplicand 1 1 0 1 Product Initial values Unsigned Division How would you do this? Could you do this via multiplication? Break into teams of three and spend 15 minutes discussing how you would accomplish this Signed Multiplication x 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 1 0 1 0 0 1 1 0 1 1 1 0 1 1 1 (-1)10 (+1)10 X (+15)10 Signed Multiplication ? 1 1 1 1 x 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 1 0 0 0 1 1 0 1 0 0 1 1 0 1 1 1 0 1 1 1 Sign extended (-1)10 (+1)10 (-1)10 What about overflow? Floating Point: Addition & Subtraction Virtue of using sign bit, exponent in excess notation, magnitude … Numbers can be logically compared without unpacking Why? Floating Point: Addition & Subtraction Adjust exponents (and magnitudes) so both operands are set to higher exponent Add or subtract signed magnitudes Normalize Floating Point: Multiplication & Division Sign Same? Set to 0 Different? Set to 1 Exponents Add for multiplication Subtract divisor exponent from dividend exponent Magnitude Multiply/Divide unsigned magnitudes Normalize Floating Point: Multiplication & Division Use this approach to perform … (+.110 x 25) / (+.100 x 24) Any problems? What should the answer be? How could you modify the previous method to account for this? IEEE 754 Floating Point Standard Single & Double Precision Denormalized Single & Double Extended Single & Double Precision 32 bits Single Precision 8 bits 23 bits Exponent Fraction Sign (1 bit) Double Precision 64 bits 11 bits 52 bits Single & Double Precision Sign (1 bit) Single Precision 32 bits 8 bits 23 bits Exponent Fraction Sign bit 8-bit excess 127 exponent 00000000 and 11111111 for special cases 23-bit normalized fraction with hidden bit Single & Double Precision Sign bit 11-bit excess 1023 exponent 00000000000 and 11111111111 for special cases Sign 52-bit normalized fraction with hidden bit (1 bit) Double Precision 64 bits 11 bits 52 bits Five Basic Number Types Nonzero normalized “Clean zero” All 0’s in exponent and fraction Sign bit can be 0 or 1 Infinity All 1’s in exponent All 0’s in fraction Sign bit can be 0 or 1 Five Basic Number Types Not a Number (NaN) Sign bit is 0 or 1 Exponent all 1’s Fraction non-zero Denormalized “Dirty zero” Sign bit is 0 or 1 Exponent all 0’s Fraction actual magnitude No hidden bit Single & Double Extended Extend width of exponent and fraction Depends upon implementation FYI Character Codes ASCII American Standard Code for Information Interchange EBCDIC Extended Binary Coded Decimal Interchange Code Unicode