Data Representation 2

Download Report

Transcript Data Representation 2

Data Representation
- Part II
Characters
A variable may not be a non-numerical
type
 Character is the most common nonnumerical type in a programming
language
 When a key is pressed on the keyboard
a unique representation of the key is
transmitted to the computer
 ASCII1 assigns unique representations
to 128 characters (see page 102 of the text)

While the characters are not numbers,
their unique representations are 7-bit
unsigned binary representation
 The representations allow programmers
to easily compare characters using
equality or relational operators (e.g., >,
<=)


An operation that can take advantage of
how the ASCII representation are
arranged is sorting.
Example 10.1 (char
integer)
move int 0
get ch
procch:bgt ch,’9’,notadigit
blt ch,’0’,notadigit
sub ch,ch,’0’
mul int,int,10
add int,int,ch
get ch
b
procch
notadigit:
Check that the
character read
is a digit
Convert into
decimal
Floating Point Representation
The IEEE Floating Point Standard (FPS) is
a widely used floating point representation
from among the many alternative formats
 The representation for floating point
numbers are broken into two parts:

 mantissa
(variant of a scaled, sign magnitude
f1f 0
integer)
1 + f 22 f 21 
23
2
 exponent (8-bit, biased-127 integer)

A number N represented in floating point is
determined by the mantissa m and an
exponent e
N = (-1)s * m * 2e
If the sign of the mantissa is negative,
s = 1; if the sign of the mantissa is positive,
s = 0.
 The mantissa is normalized, i.e., 1  m < 2
 In the FPS format, the precision is specified
as 24 bits thus m = 1.f22f21…f1f0

1+
f 22 f 21 f1f 0
23
2
Conversion to Floating Point
Representation
1.Break the decimal number into two parts:
an integer and a fraction
2.Convert the integer into binary and place it
to the left of the binary point
3.Convert the fraction into binary and place
it to the right of the binary point
4.Write it in scientific notation and normalize
Example 10.2
Convert 22.625 to floating point
representation
1. Convert 22 to binary. 2210 = 101102
2. Convert .625 to binary
2*.625 = 1 + .25
.62510=.1012
2*.25
= 0 + .5
2*.5
= 1 + 0
3. Thus 22.62510 = 10110.1012
4. In scientific notation: 10110.101*20
Normalized form: 1.0110101*24
IEEE FPS Representation

Given the floating point representation
N = (-1)s * m * 2e
where m = 1.f22f21…f1f0
we can convert it to the IEEE FPS format
using the relations:
F = (m-1)*2n
E = e + 127
S = s
S
E
F
Single-Precision Floating Point
The IEEE FPS single precision format has
F = fractional
32 bits distributed as

S
E
F
1
8
23
part of the
significand
0  E  255, thus the true exponent e is
restricted so that -126 e 127
Zero and the Hidden bit
In IEEE FPS, zero is represented by
setting E = F = 0 regardless of the
sign bit, thus there are two
representations for zero: +0 and -0.
 + by S=0, E=255, F=0
 - by S=1, E=255, F=0
 NaN or Not-a-Number by E=255,
F0 (may result from 0 divide by 0)


The leading 1 in the fraction is not
represented. It is the hidden bit.
Converting to IEEE FPS
1.Convert into a normalized floating point
representation
2.Bias the exponent. The result will be E.
3.Put the values into the correct field. Note
that only the fractional part of the
significand is placed into F.
Example 10.3
Convert 22.625 to IEEE FPS format (single
precision)
1. In scientific notation: 10110.101*20
Normalized form: 1.0110101*24
2. Bias the exponent: 4 + 127 = 131
13110 = 100000112
3. Place into the correct fields.
S = 0
E = 10000011
F = 011 0101 0000 0000 0000 0000
0
S
10000011
E
01101010000000000000000
F
Example 10.4
Convert 17.15 to IEEE FPS format (singleprecision)
17.1510 = 10001.0010 0110 0110 0110 011*20
1. Normalized form:
1. 0001 0010 0110 0110 0110 011 * 24
2. Bias the exponent: 4 + 127 = 131
13110 = 100000112
3. Place into the correct fields.
S = 0
E = 10000011
F = 00010010011001100110011
0
S
10000011
00010010011001100110011
E
F
Example 10.5
Convert -83.7 to IEEE FPS format (single
precision)
2*.7 = 1 + .4
Note: this is in single-precision
2*.4 = 0 + .8
floating point representation
2*.8 = 1 + .6
format but not FPS format
2*.6 = 1 + .2
2*.2 = 0 + .4
-83.710=-1010011.101100110
2*.4 = 0 + .8
2*.8 = 1 + .6
2*.6 = 1 + .2
2*.2 = 0 + .4
. . .
1. In scientific notation:
-1010011.101100110 * 100
Normalized form: -1.010011101100110 * 26
2. Bias the exponent: 6 + 127 = 133
13310 = 100001012
3. Place into the correct fields.
S = 1
E = 10000101
F = 01001110110011001100110
1
S
10000101
01001110110011001100110
E
F