* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download Computer Systems - Department of Computer Science and
Survey
Document related concepts
Transcript
Introduction to Computer Systems Lecturer: Steve Maybank Department of Computer Science and Information Systems sjmaybank@dcs.bbk.ac.uk Spring 2017 Week 3b: Floating Point Notation for Binary Fractions 24 January 2017 Birkbeck College, U. London 1 Binary Fractions A binary fraction has the form sign||bitString1||radix point||bitString2 E.g. +1.01, -10011.11 The + is usually omitted Digits to the right of the radix point specify powers of 2 with negative exponents E.g. 1.01 is 20 + 0 × 2−1 + 2−2 = 1 + 1/4 24 January 2017 Birkbeck College, U. London 2 Properties of Binary Fractions 1 Multiply by 2: move the radix point one place to the right, e.g. 1.01x2 = 10.1 Divide by 2: move the radix point one place to the left, e.g. 1.01÷2 = 0.101 24 January 2017 Birkbeck College, U. London 3 Properties of Binary Fractions 2 A number can be specified exactly by a binary fraction if and only if it has the form integer/power of 2 Examples 1.01 specifies the decimal fraction 5/4 An infinite number of bits is required to specify 1/3: 0.0101010101010101…. 24 January 2017 Birkbeck College, U. London 4 Specification of a Binary Fraction -101.11001 The binary fraction has three parts: The sign – The position of the radix point The bit string 10111001 24 January 2017 Brookshear, Section 1.7 5 Binary Fraction and Powers of 2 1 0 22 21 1 20 . 1 1 0 0 1 2-1 2-2 2-3 2-4 2-5 22+20+2-1+2-2+2-5 = 5+(25/32) 24 January 2017 Brookshear, Section 1.7 6 Reconstruction of a Binary Fraction The sign is + The radix point is between the second bit from the left and the third bit from the left The bit string is 101101 What is the binary fraction? 24 January 2017 Brookshear, Section 1.7 7 Summary To represent a binary fraction three pieces of information are needed: 24 January 2017 Sign Position of the radix point Bit string Brookshear, Section 1.7 8 Spacing Between Numbers 0 Two’s complement: equally spaced numbers Floating point: big gaps between big numbers, small gaps between small numbers. 24 January 2017 Birkbeck College, U. London 0 9 The Key: Exponents -4 -3 -2 -1 0 1 2 3 2-4 2-3 2-2 2-1 20 21 22 23 1/16 1/8 ¼ ½ 1 2 4 8 big gaps between big numbers small gaps between small numbers 24 January 2017 Birkbeck College, U. London 10 Standard Form for a Binary Fraction Any non-zero binary fraction can be written in the form ±2r x 0.t where t is a bit string beginning with 1. Examples 11.001 = +22 x 0.11001 -0.011011 = -2-1 x 0.11011 24 January 2017 Brookshear, Section 1.7 11 Floating Point Representation Write a non-zero binary fraction in the form ± 2r x 0.t Record the sign – bit string s1 Record r – bit string s2 Record t – bit string s3 Output s1||s2||s3 24 January 2017 Brookshear, Section 1.7 12 Floating Point Notation 8 bit floating point: s e1 sign 1 bit e2 e3 m1 m2 m3 m4 exponent 3 bits radix r mantissa 4 bits bit string t The exponent is in 3 bit excess notation 24 January 2017 Brookshear, Section 1.7 13 To Find the Floating Point Notation Write the non-zero number as ± 2r x 0.t If sign = -1, then s1=1, else s1=0. s2 = 3 bit excess notation for r. s3= leftmost four bits of t. 24 January 2017 Brookshear, Section 1.7 14 Example b= - 0.00101011101 s=1 b= -2-2 x 0.101011101 exponent = -2, s2 =010 Floating point notation 10101010 24 January 2017 Birkbeck College, U. London 15 Second Example Floating point notation: 10111100 s1=1, therefore negative. s2 = 011, exponent=-1 s3 = 1100 Binary fraction -0.011 = -3/8 24 January 2017 Birkbeck College, U. London 16 Class Examples Find the floating point representation of the decimal number -1 1/8 Find the decimal number which has the floating point representation 01101101 24 January 2017 Birkbeck College, U. London 17 Round-Off Error 2+5/8= 10.101 2 ½ = 10.100 The 8 bit floating point notations for 2 5/8 and 2 ½ are the same: 01101010 The error in approximating 2+5/8 with 10.100 is round-off error or truncation error. 24 January 2017 Brookshear, Section 1.7 18 Floating Point Addition of Numbers x, y a = floating point number nearest to x b = floating point number nearest to y c=a+b z=floating point number nearest to c z=x@y 24 January 2017 Birkbeck College, U. London 19 Examples of Floating Point Addition 2 ½: 01101010 1/8: 00101000 ¼: 00111000 2 ¾: 01101011 2 ½ @(1/8 @ 1/8)=2 ½ @ 1/4=2 ¾ (2 ½ @ 1/8) @ 1/8=2 ½ @ 1/8=2 ½ 24 January 2017 Birkbeck College, U. London 20 Round-Off in Decimal and Binary 1/5=0.2 exactly in decimal notation 1/5=0.0011001100110011….. in binary notation 1/5 cannot be represented exactly in binary floating point no matter how many bits are used. Round-off is unavoidable but it is reduced by using more bits. 24 January 2017 Birkbeck College, U. London 21 Floating Point Errors Overflow: number too large to be represented. Underflow: number <>0 and too small to be represented. Invalid operation: e.g. SquareRoot[-1]. See http://en.wikipedia.org/wiki/Floating_point 24 January 2017 Birkbeck College, U. London 22 IEEE Standard for Floating Point Arithmetic Single precision, 32 bits. 0 1 … 8 9 … 31 Mantissa m bits 9-31 Sign s Exponent e bit 0 bits 1-8 If 0<e<255, then value = (-1)s x 2e-127 x 1.m If e=0, s=0, m=0, then value = 0 If e=0, s=1, m=0, then value = -0 For a general discussion of fp arithmetic see http://www.ee.columbia.edu/~marios/matlab/Fall96Cleve.pdf 24 January 2017 Birkbeck College, U. London 23 Numbers in Computing q = 0.1 The value stored in the memory location q is not 0.1! E.g. in Python the value stored is 0.1000000000000000055511151231257827021181583404541015625 See https://docs.python.org/2/tutorial/floatingpoint.html 24 January 2017 Birkbeck College, U. London 24