Set 16 FLOATING POINT ARITHMETIC TOPICS Binary representation of floating point Numbers Computer representation of floating point numbers Floating point instructions

BINARY REPRESENTATION OF FLOATING POINT NUMBERS Converting decimal fractions into binary representation. Consider a decimal fraction of the form: 0.d1d2...dn We want to convert this to a binary fraction of the form: 0.b1b2...bn (using binary digits instead of decimal digits) Algorithm for conversion

Let X be a decimal fraction: 0.d1d2..dn i = 1 Repeat until X = 0 or i = required no. of binary fractional digits { Y = X * 2 X = fractional part of Y Bi = integer part of Y i = i + 1 } EXAMPLE 1

Convert 0.75 to binary X = 0.75 (initial value) X* 2 = 1.50. Set b1 = 1, X = 0.5 X* 2 = 1.0. Set b2 = 1, X = 0.0 The binary representation for 0.75 is thus 0.b1b2 = 0.11b Let's consider what that means... In the binary representation 0.b1b2...bm b1 represents 2-1 (i.e., 1/2)

b2 represents 2-2 (i.e., 1/4) ... bm represents 2-m (1/(2m)) So, 0.11 binary represents 2-1 + 2-2 = 1/2 + 1/4 = 3/4 = 0.75 EXAMPLE 2 Convert the decimal value 4.9 into binary Part 1: convert the integer part into

binary: 4 = 100b Part 2. Convert the fractional part into binary using multiplication by 2: X = .9*2 = 1.8. Set b1 = 1, X = 0.8 X*2 = 1.6.

Set b2 = 1, X = 0.6 X*2 = 1.2. Set b3 = 1, X = 0.2 X*2 = 0.4. Set b4 = 0, X = 0.4

X*2 = 0.8. Set b5 = 0, X = 0.8, which repeats from the second line above. Since X is now repeating the value 0.8, we know the representation will repeat. The binary representation of 4.9 is

thus: 100.1110011001100... COMPUTER REPRESENTATION OF FLOATING POINT NUMBERS In the CPU, a 32-bit floating point number is represented using IEEE standard format as follows: S | EXPONENT | MANTISSA where S is one bit, the EXPONENT is 8 bits, and the MANTISSA is 23 bits.

The mantissa represents the leading significant bits in the number. The exponent is used to adjust the position of the binary point (as opposed to a "decimal" point) The mantissa is said to be normalized when it is expressed as a value between 1 and 2. I.e., the mantissa would be in the form 1.xxxx.

The leading integer of the binary representation is not stored. Since it is always a 1, it can be easily restored. The "S" bit is used as a sign bit and indicates whether the value represented is positive or negative (0 for positive, 1 for negative).

If a number is smaller than 1, normalizing the mantissa will produce a negative exponent. But 127 is added to all exponents in the floating point representation, allowing all exponents to be represented by a positive number. Example 1. Represent the decimal value 2.5 in 32-bit floating point format.

2.5 = 10.1b In normalized form, this is: 1.01 * 21 The mantissa: M = 01000000000000000000000 (23 bits without the leading 1) The exponent: E = 1 + 127 = 128 = 10000000b The sign: S = 0 (the value stored is positive) So, 2.5 = 01000000001000000000000000000000 Example 2: Represent the number -0.00010011b in floating point form. 0.00010011b = 1.0011 * 2-4

Mantissa: M = 00110000000000000000000 (23 bits with the integral 1 not represented) Exponent: E = -4 + 127 = 01111011b S = 1 (as the number is negative) Result: 1 01111011 00110000000000000000000 Exercise 1: represent -0.75 in floating point format. Exercise 2: represent 4.9 in floating point format.

FLOATING POINT INSTRUCTIONS Floating point Architecture: 8 80-bit stack registers ST(0), ST(1), ..,ST(7) (ST(0) can be abbreviated as ST) To use the floating point stack, we: Push data from memory onto the stack Process data Pop data from stack to memory. Some floating point instructions:

INSTRUCTION Push and pops FLD, FSTP FILD, FISTP DESCRIPTION Arithmetic In all 4 cases below, the stack is popped subsequently. So the ST(1) shown becomes ST(0)

FADD FSUB FMUL FSUB Push and pop floating point data Push and pop integer data ST(1) = ST(1) + ST(0) ST(1) = ST(1) - ST(0)

ST(1) = ST(1) * ST(0) ST(1) = ST(1) / ST(0) Trigonometry FSIN ST(0) = sine of ST(0) radians FCOS ST(0) = cosine of ST(0) radians

FTAN ST(0) = tan of ST(0) radians FLDPI Push value of onto stack Example 1. X DD 3.4

Y DD 2 'This is an integer, while 2.0 is flt. pt. Z DD ? To evaluate Z = X + Y FLD X FILD Y FADD FSTP Z ;ST(0) = X ;ST(0) = Y, ST(1) = X

;ST(0) = X + Y ;Z = X + Y Example 2. X DD 3.9 Y DD 2.8 U DD 7.3 V

DD 4.62 ___________ FLD X FLD Y FMUL FLD U FLD V = X*Y FDIV To evaluate X * Y - U / V

______code follows ;st(0) = X ;st(0) = Y, st(1) = X ;st(0) = X*Y ;st(0) = U, st(1) = X*Y ;st(0) = V, st(1) = U, st(2) ;st(0) = U/V, st(1) = X*Y Util.lib contains the following subroutines for inputting and outputting floating point numbers:

GetFP This inputs a no. such as 33 or 3.56 from the keyboard, and pushes it, in binary floating point form, onto the floating point stack. PutFP This pops the number from the top of the floating point stack, and outputs it to the keyboard in ascii. Note The example following assumes that you have a copy

of mymacros.txt in your masm615/programs directory which includes the extrns and includelib statements discussed in the slides on macros. Example 3. Calculating Area of a Circle title calculation area of circle with inputted radius include mymacros.txt .model small .stack 100h .data

radius dd ? .386 .code circle proc startup display "Enter the radius: " infp ; macro for: call getfp fld st ; this pushes st(0), so st(0) = st(1)

fmul fldpi fmul display "The area of the circle is " outfp ; macro for: call putfp endup circle endp end circle fabs replaces st (i.e. st(0)) by its absolute value

fsqrt replaces st by its square root frndint rounds st up or down to the nearest integer We have already covered fadd used without arguments. Given,e.g.: m dd 3.6 n dd 21

fadd m will set st(0) = st(0) + m fiadd n will do the same after converting the integer n to floating point fadd st(3) will set st(0) = st(0) + st(3) The same variations apply to: fmul fdiv fld e.g: fld st will push the value of st onto the stack, so now the top

two members of the stack will have this value. Read chapter 19 of textbook

Recently Viewed Presentations

  • WALK (American Tract Society Dictionary) Is often figuratively

    WALK (American Tract Society Dictionary) Is often figuratively

    They are presumptuous, self-willed. They are not afraid to speak evil of dignitaries, 2Peter 3:3 knowing this first: that scoffers will come in the last days, walking according to their own lusts, The Christian Walk Ephesians 4:17 This I say,...
  • Letters and Sounds - Los Angeles Unified School District

    Letters and Sounds - Los Angeles Unified School District

    Letters and Sounds: Z, Y, U, Q, X Lakeside Lesson 44 Transparency 9 Based on and organized for use with Hampton Brown's High Point curriculum, Basics level.
  • A Coming Revolution in CEQA and Sustainable Community

    A Coming Revolution in CEQA and Sustainable Community

    "Pedestrian miles" was deleted; now as crow flies from perimeter? What if K-8, K-12? Prorate distances? Suggested Appendix N: "attach map and methodology" Bikes & scooters parking & storage? Both bikes and scooters? What about skateboards? What capacity? What constitutes...
  • Workshop on Faculty Recruitment for Diversity and Excellence

    Workshop on Faculty Recruitment for Diversity and Excellence

    Jackie Isaacs, Professor of Mechanical and Industrial Engineering, Chair. Dan Danielsen, Professor of Law. Jack Dennerlein, Professor of Physical Therapy. Marjorie Platt, Professor of Accounting. Darien Wood, Professor of Physics. Kathrin Zippel, Professor of Sociology. Erinn Taylor de Barroso, Assistant...
  • Latin - The 5 W's

    Latin - The 5 W's

    Raise your hand if you get that joke/reference. Latin is an important root to modern languages. Latin is the direct root of several modern languages called 'Romance' languages - including, but not limited to, Spanish, French, Italian, Portuguese, and Romanian....
  • The Family  2015. Cengage Learning. All rights reserved.

    The Family 2015. Cengage Learning. All rights reserved.

    Figure 15.3 The acceptance-responsiveness and demandingness-control dimensions of parenting. Social Class, Economic Hardship,and Parenting. Compared with middle-class and upper-class parents. Working-class parents tend to stress obedience and respect for authority.
  • Starter Questions 21/02/11 1. Calculate the circumference 15cm

    Starter Questions 21/02/11 1. Calculate the circumference 15cm

    Find percentage values. 1. Convert percentages to fractions and decimals. 2. Change fraction to percentages. 21/02/11 Created by Mr. Lafferty Maths Dept. Created by Mr. Lafferty Maths Dept. Created by Mr. Lafferty Maths Dept. Created by Mr. Lafferty Maths Dept.
  • Pecha Kucha as Dialogue: Examining Perspective Katie Dredger,

    Pecha Kucha as Dialogue: Examining Perspective Katie Dredger,

    "Dialogue cannot exist…in the absence of a profound love for the world and for people. … Because love is an act of courage, not of fear, love is commitment to others. … And this commitment, because it is loving, is...