Download Computer Systems - Department of Computer Science and

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Approximations of π wikipedia , lookup

Musical notation wikipedia , lookup

History of mathematical notation wikipedia , lookup

Large numbers wikipedia , lookup

Big O notation wikipedia , lookup

Addition wikipedia , lookup

Location arithmetic wikipedia , lookup

Arithmetic wikipedia , lookup

Elementary mathematics wikipedia , lookup

Positional notation wikipedia , lookup

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