ECE 645: Lecture 4 Number Representation Part 1 Fixed-Point Representations. Endianness. Required Reading B. Parhami, Computer Arithmetic: Algorithms and Hardware Design Chapter 1, Numbers and Arithmetic, Sections.

Download Report

Transcript ECE 645: Lecture 4 Number Representation Part 1 Fixed-Point Representations. Endianness. Required Reading B. Parhami, Computer Arithmetic: Algorithms and Hardware Design Chapter 1, Numbers and Arithmetic, Sections.

ECE 645: Lecture 4
Number Representation
Part 1
Fixed-Point Representations.
Endianness.
Required Reading
B. Parhami,
Computer Arithmetic: Algorithms and Hardware Design
Chapter 1, Numbers and Arithmetic, Sections 1.1-1.6
Chapter 2, Representing Signed Numbers
Endianness,
from Wikipedia, the free encyclopedia
http://en.wikipedia.org/wiki/Endianness
Historical Representations:
Ancient Egyptians Numerals (1)
– ~4000 BC
– “Sum of Symbols”
= (34)10
Historical Representations:
Ancient Egyptians Numerals (2)
What number does this stone carving
from Karnak represent?
Historical Representations:
Ancient Egyptians Numerals (3)
Historical Representations:
Ancient Egyptians Numerals (4)
Symbol for a fraction (part):
Special symbols for most commonly used fractions:
Historical Representations:
Ancient Babylonian Numerals (1)
–
–
–
–
First known positional system
3100 BC
Radix 60 (sexagesimal)
Two symbols:
=1
= 10
− Integers and fractions were represented
identically - a radix point was not written but
rather made clear by context
Babylonian Numerals: Example
1 x 602
20 x 601
= (4,856)10
56 x 600
Historical Representations:
Ancient Babylonian Numerals (2)
Digits from 1 to 59
Positional Code with Zero
• Zero Represented by Space
– Partial solution
– What about trailing zeros?
• Babylonians Introduced New Symbol
–
or
– 4th to 1st Century BC
• Zero Allows Representation of Fractions
– Fractions started with zero
Mixed System
• Roman Numerals
– Sum of all symbols
– I=1 V=5 X=10 L=50 C=100 D=500 M=1000
– Difficult to do arithmetic
e.g.,
MCDXLVII
IX
?
Hindu-Arabic Numeral System
Brahmi numerals, India, 400 BC-400 AD
Evolution of numerals in early Europe
Positional Code Decimal System
– Documented in the 9th century
– Position of coefficient determines its value
– Coefficient in position is multiplied by radix
(10) raised to the power determined by its
position, e.g.,
4 * 103  8 * 102  5 * 101  6 * 100  4,85610
Migration of Positional Notation
• ~750 AD
– Zero spread from India to Arabic countries
• ~1250 AD
– Zero spread to Europe
• Importance of Zero
– Ease of arithmetic which leads to improved
commerce
Binary Number System
• Binary
–
–
–
–
–
Positional number system
Two symbols, B = { 0, 1 }
Easily implemented using switches
Easy to implement in electronic circuitry
Algebra invented by George Boole (1815-1864)
allows easy manipulation of symbols
01012  0 * 23 1* 22  0 * 21 1* 20  510
Modern Arithmetic and Number Systems
• Modern number systems used in digital arithmetic can be
broadly classified as:
• Fixed-point number representation systems
• Integers
• Rational numbers of the form x = a/2f, a is an integer, f is a positive integer
• Floating-point number representation systems
• x * bE, where x is a rational number, b the integer base, and E the exponent
• Note that all digital numbers are eventually coded in bits
{0,1} on a computer
16
Encoding Numbers in 4-Bits
16 14 12 10
8
6
4
2
0
2
4
6
8
10
12
14
16
Number
format
Unsigned integers
Signed-magnitude
fixed
point

3 + 1 fixed-point, xxx.x
Signed fraction, .xxx

2’s-compl. fraction, x.xxx
2 + 2 floating-point, s  2 e
e in [2, 1], s in [0, 3]
floating
e
s
point
2 + 2 logarithmic (log = xx.xx)
log x
17
Classification of number systems (1)
Number system
Non-positional
Positional
Fixed-radix
Conventional
Binary
Decimal
Hexadecimal
Mixed-radix
Unconventional
Signed-digit
Non-redundant
Redundant
Classification of number systems (2)
Positional
k 1
X   xi  wi
wi - weight of the digit xi
i  l
Fixed-radix
k 1
X   xi  r
i
r - radix of the number system
i  l
Conventional fixed-radix
k 1
X   xi  r
i  l
r integer, r > 0
i
xi  {0, 1, …, r-1}
Classification of number systems (3)
Unconventional fixed-radix
k 1
X   xi  r
i
xi  {-, …,  }
i  l
Signed-digit
Non-redundant
Redundant
>0  negative digits
number of digits =  +  + 1  r
number of digits =  +  + 1 > r
Example of a mixed-radix
positional system?
What is it?
What is it?
What is it?
Samrat Yantra
in Jantar Mantar - Jaipur, India
- The largest sundial in the world
- 90 feet (27 m) tall
- Conceived by Maharaja Sawai Raja Jai Singh II
- Built of local stone and marble 1728-1734
- The style's horizontal angle is equal the sundial's
geographical latitude 27° north
- The time is read by observing where the shadow
is sharpest at the time
- Accuracy of 2 seconds
- Reconstructed in 1901
Jantar Mantar - Jaipur, India
Original Units of Time
- 1 day = 60 ghadis
- 1 ghadi = 60 pals
- 1 pal = 4 breaths
(1 ghadi = 24 minutes)
(1 pal
= 24 seconds)
(1 breath = 6 seconds)
Original weights: 60*60*4
day
60*4
ghadi
Current weights:
60*60 60 seconds
hour minute
24*60*60
day
4 breaths
pal
Fixed-point representation
Integral and fractional part
X = xk-1 xk-2 … x1 x0 . x-1 x-2 … x-l
Integral part
Fractional part
Radix point
• NOT stored in the register
• understood to be in a fixed position
Fixed-Radix
Conventional (Unsigned)
Representations
Fixed-Radix Conventional Number Systems
Fixed Point Number system
Non-positional
Positional
Fixed-radix
Conventional
(unsigned)
Binary
Decimal
Hexadecimal
Mixed-radix
Unconventional (signed)
Signed-digit
Non-redundant
Redundant
29
Range of numbers
Xmin
Number system
Xmax
Decimal
X = (xk-1 xk-2 … x1 x0.x-1 … x-l)10
0
10k - 10-l
0
2k - 2-l
0
rk - r-l
Binary
X = (xk-1 xk-2 … x1 x0.x-1 … x-l)2
Conventional fixed-radix
X = (xk-1 xk-2 … x1 x0.x-1 … x-l)r
Notation:
ulp =
r-l
unit in the least significant position
unit in the last position
Number of digits
Number system
Number of digits in the integer
part necessary to cover the range
0..Xmax
Decimal
k  log10 X max   1 
 log10 ( X max  1)
Binary
k  log2 X max   1 
 log2 ( X max  1)
Conventional
fixed-radix
k  logr X max   1 
 logr ( X max  1)
Radix Conversion
Whole part
Fractional part
u = w.v
=
( xk–1xk–2 . . . x1x0 . x–1x–2 . . . x–l )r
= ( XK–1XK–2 . . . X1X0 . X–1X–2 . . . X–L )R
Old
New
Example: (31)eight = (25)ten
Two methods:
Option 1) Radix conversion, using arithmetic in the old radix r
Convenient when converting from r = 10 or familiar radix
Option 2) Radix conversion, using arithmetic in the new radix R
Convenient when converting to R = 10 or familiar radix
From: Parhami, Computer Arithmetic: Algorithms and Hardware Design
32
Option 1: Arithmetic in old radix r
Converting whole part w:
Repeatedly divide by five
(105)ten = (?)five
Quotient
Remainder
105
0
21
1
4
4
0
Therefore, (105)ten = (410)five
Converting fractional part v:
Repeatedly multiply by five
(105.486)ten = (410.?)five
Whole Part
Fraction
.486
2
.430
2
.150
0
.750
3
.750
3
.750
Therefore, (105.486)ten  (410.22033)five
From: Parhami, Computer Arithmetic: Algorithms and Hardware Design
33
Radix Conversion of the Integral Part
R - destination radix
k 1

XI = (xk-1 xk-2 … x1 x0)R =
xi  R i =
i 0
= ((...((xk-1 R + xk-2) R + xk-3 ) R + … + x2 ) R + x1 ) R + x0
Quotient
(...((xk-1 R + xk-2) R + xk-3 ) R + … + x2 ) R + x1
...((xk-1 R + xk-2) R + xk-3 ) R + … + x2
……….
xk-1 R + xk-2
xk-1
0
Remainder
x0
x1
……….
xk-3
xk-2
xk-1
Radix Conversion of the Fractional Part
R - destination radix
1
XF = (. x-1 x-2 … x-l+1 x-l)R =

xi  R i
=
i  l
= R-1 (x-1 + R-1 (x-2 + R-1 (…. + R-1 ( x-l+1 + R-1 x-l )….)))
Integer part
Fractional part
x-1
R-1 (x-2 + R-1 (….. + R-1 ( x-l+1 + R-1 x-l)….))
x-2
……….
x-l+2
x-l+1
x-l
R-1 (….. + R-1 ( x-l+1 + R-1 x-l)….)
……….
R-1 ( x-l+1 + R-1 x-l)
R-1 x-l
0
Option 2: Arithmetic in new radix R
Converting fractional part v: (410.22033)five = (105.?)ten
(0.22033)five  55
=
(22033)five
=
(1518)ten
1518 / 55
=
1518 / 3125
=
0.48576
Therefore, (410.22033)five = (105.48576)ten
Converting (22033)five = (?)ten
((((2  5) + 2)  5 + 0)  5 + 3)  5 + 3
|-----|
:
:
:
:
10
:
:
:
:
|-----------|
:
:
:
12
:
:
:
|---------------------|
:
:
60
:
:
|-------------------------------|
:
303
:
|-----------------------------------------|
1518
From: Parhami, Computer Arithmetic: Algorithms and Hardware Design
Horner’s
rule or
formula
36
Option 2 cont'd: Horner's rule for fractions
Horner’s rule is also applicable: Proceed from right to
left and use division instead of multiplication
Converting fractional part v:
(0.22033)five = (?)ten
(((((3 / 5) + 3) / 5 + 0) / 5 + 2) / 5 + 2) / 5
|-----|
:
:
:
:
0.6
:
:
:
:
|-----------|
:
:
:
3.6
:
:
:
|---------------------|
:
:
0.72
:
:
|-------------------------------|
:
2.144
:
|-----------------------------------------|
2.4288
|-----------------------------------------------|
0.48576
From: Parhami, Computer Arithmetic: Algorithms and Hardware Design
Horner’s
rule or
formula
37
Radix Conversion Shortcut for r=bg, R=bG
r=bg 
b
 R=bG
4=22  2
 8=23
(2301.302)4 = (10 110 001. 110 010)2 = (261.62)8
• Trick here is to first convert to a number in radix b, then to R
• Cluster in groups of 3 (because 23 = 8) moving away from binary point
38
Signed Number Representations
Representations of signed numbers
Signed-magnitude
Biased
Radix-complement
r=2
Two’s complement
Complement
Diminished-radix
complement
(Digit complement)
r=2
One’s complement
Signedmagnitude
7
6
5
4
3
2
1
0
-0
-1
-2
-3
-4
-5
-6
-7
-8
0111
0110
0101
0100
0011
0010
0001
0000
1000
1001
1010
1011
1100
1101
1110
1111
Two’s
complement
One’s
complement
1111
1110
1101
1100
1011
1010
1001
1000
0111
0110
0101
0100
0011
0010
0001
0000
0111
0110
0101
0100
0011
0010
0001
0000
1111
1110
1101
1100
1011
1010
1001
1000
0111
0110
0101
0100
0011
0010
0001
0000
1111
1110
1101
1100
1011
1010
1001
1000
Biased
Signed-magnitude representation of signed numbers
k-1 k-2
0
magnitude
sign
Advantages:
• conceptual simplicity
• symmetric range: -(2k-1-1) .. -(2k-1-1)
• simple negation
Disadvantages:
• addition of numbers with the same sign and with
a different sign handled differently
Biased (excess-B) representation of signed integers
B = 2k-1, k=4
R(X) = X + B
-2k-1 ≤ X ≤ 2k-1-1
X
-8 -7 -6 -5 -4 -3 -2 -1 0 1
2 3 4 5 6 7
R
R(X)
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Biased representation
with radix 2
Signed number X
Representation
mapping
Unsigned Representation R(X)
Binary mapping
Bit vector (xk-1xk-2...x0.x-1...x-l)
k 1
R( X )   xi  2i
i l
Complement
Signed Number Representations
Complement representations
with radix 2
Signed number X
Representation
mapping
Unsigned Representation R(X)
Binary mapping
Bit vector (xk-1xk-2...x0.x-1...x-l)
k 1
R( X )   xi  2i
i l
Useful dependencies
1 – xi = xi
xi 1 – xi x i
0
1
1
0
1
0
X when X  0
|X| =
- X when X < 0
One’s complement transformation
For
k 1
A   Ai  2i  0
i l
def
OC(A) = A = 2k – 2-l - A
k-1 k-2 ...
–
0
-1
-2 ... -l
Properties:
1 1 ... 1 . 1 1 ... 1
Ak-1 Ak-2 … A0 . A-1 A-2 ... A-l
0  OC(A)  2k – 2-l
Ak-1 Ak-2 … A0 . A-1 A-2 ... A-l
OC(OC(A)) = A
One’s Complement Representation
of Signed Numbers
For
–(2k-1 – 2-l)  X  2k-1 – 2-l
X
for X > 0
def
R(X) =
0 or OC(0) for X = 0
OC(|X|)
for X < 0
0  R(X)  2k – 2-l
One’s complement representation of signed integers
X>0
0
X
0,
2k-1
X<0
k=4
X+2k-1 = 2k-1 - |X|
-8 -7 -6 -5 -4 -3 -2 -1 0 1
2 3 4 5 6 7
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
One’s complement representation of signed numbers
+15
+0
+1
+14
+2
+13
+3
+12
+4
+5
+11
+6
+10
+9
+8
+7
Two’s complement transformation (1)
For
k 1
A   Ai  2i  0
i l
def
TC(A) =
A + 2-l = 2k – A for A > 0
0
2k – A = 2k – A – 2-l + 2-l =
for A = 0
Properties:
0  TC(A)  2k – 2-l
= (2k – 2-l – A)+2-l = A + 2-l
TC(TC(A)) = A
Two’s complement transformation (2)
For
k 1
A   Ai  2i  0
i l
def
TC(A) = A + 2-l mod 2k = 2k – A mod 2k
Two’s Complement Representation
of Signed Numbers
For
–2k-1  X  2k-1 – 2-l
def
X
for X  0
TC(|X|)
for X < 0
R(X) =
0  R(X)  2k – 2-l
Two’s complement representation of signed integers
X>0
0
X
0
X<0
k=4
X+2k = 2k - |X|
-8 -7 -6 -5 -4 -3 -2 -1 0 1
2 3 4 5 6 7
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Two’s complement representation of signed integers
+15
+0
+1
+14
+2
+13
+3
+12
+4
+5
+11
+6
+10
+9
+8
+7
Signed-magnitude representation of signed numbers
X>0
0
X
0,
2k-1
X<0
k=4
| X|+2k-1 = -X+2k-1
-8 -7 -6 -5 -4 -3 -2 -1 0 1
2 3 4 5 6 7
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Signed-magnitude representation of signed numbers
+15
+0
+1
+14
+2
+13
+3
+12
+4
+5
+11
+6
+10
+9
+8
+7
Biased representation of signed numbers
X>0
0
X<0
X+B
B
X+B
-8 -7 -6 -5 -4 -3 -2 -1 0 1
B = 2k-1, k=4
2 3 4 5 6 7
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Biased representation of signed numbers
+15
+0
+1
+14
+2
+13
+3
+12
+4
+5
+11
+6
+10
+9
+8
+7
Arithmetic Operations in
Signed Number Representations
Unsigned addition vs. signed addition
Programmer
Machine
128 64 32 16 8 4
weight
carry
Unsigned
mind
2 1
Signed
mind
1 1 1
0 0 0 1 0 0 1 1
1 0 0 0 0 1 0 1
1 0 0 1 1 0 0 0
X
+Y
=S
x6 y6
x7 y7
c8
FA
s7
c7
FA
s6
x5 y5
c6
FA
s5
x3 y3
x4 y4
c5
FA
s4
c4
FA
s3
x2 y2
c3
FA
s2
x1 y1
c2
FA
s1
x0 y0
c1
FA
s0
Out of range flags
Carry flag - C
C=1
0
out-of-range for unsigned numbers
if
result > MAX_UNSIGNED or
result < 0
otherwise
where MAX_UNSIGNED = 28-1 for 8-bit operands
216-1 for 16-bit operands
Overflow flag - V
V=1
0
out-of-range for signed numbers
if
result > MAX_SIGNED or
result < MIN_SIGNED
otherwise
where MAX_SIGNED = 27-1 for 8-bit operands
215-1 for 16-bit operands
MIN_SIGNED = -27 for 8-bit operands
-215 for 16-bit operands
Overflow for signed numbers
Indication of overflow
Positive
+ Positive
= Negative
Negative
+ Negative
= Positive
Formulas
Overflow2’s complement = xk-1 yk-1 sk-1 + xk-1 yk-1 sk-1 =
= ck  ck-1
Two’s complement representation of signed integers
+15
+0
+1
+14
+2
+13
+3
+12
+4
+5
+11
+6
+10
+9
+8
+7
Addition of Signed and Unsigned Numbers
C=1 and V=0
8 4 21
1101
1011
11000
-8 4 2 1
13
11
24≠8
1101
1011
-3
-5
11000
-8
C=0 and V=1
-8 4 2 1
8 4 21
0011
0110
3
6
0011
0110
3
6
1001
9
1001
9≠-7
Addition of Signed and Unsigned Numbers
C=0 and V=0
8 4 21
-8 4 2 1
0101
1001
5
9
0101
1001
5
-7
1110
14
1110
-2
C=1 and V=1
-8 4 2 1
8 4 21
1100
1011
1 0111
12
11
23≠7
1100
1011
1 0111
-4
-5
-9≠-7
Two's Complement Adder/Subtractor
Architecture
Can replace this
with k xor gates
Arithmetic Shift
Two’s complement
Sh.L {001012 = +5} = 010102 = +10
Sh.L {110112 = -5} = 101102 = -10
Sh.L {010102 = +10} = 101002 = - 12
Shift left may cause overflow
overflow
Sh.R {001012 = +5} = 000102 = +2
rem 1
Sh.R {110112 = -5} = 111012 = -3
rem 1
Shift right requires sign extension
Addition and subtraction
One’s complement
Numbers of the same sign
Numbers of the opposite sign
8 42 1
8 42 1
1010
1101
+
-5
-2
10111
1
1000
end-arround carry
+
-7
0010
1110
10000
1
2
-1
0001
1
Disadvantage: Need another adder after
the addition is complete!
One’s complement representation of signed numbers
+15
+0
+1
+14
+2
+13
+3
+12
+4
+5
+11
+6
+10
+9
+8
+7
Addition and subtraction
Signed-magnitude
Numbers of the same sign
sign bit
+
0
0
Numbers of the opposite sign
magnitude
1011
0110
11
6
0 10001
17
carry = overflow
sign bit
+
1
0
magnitude
1011
0110
-11
6
11 > 6
–
1
1011
0110
11
6
0101
5
Signed Number Representations
Summary
Representing k-bit signed binary numbers
Representation
Representation Representation
for X>0
for 0
Signedmagnitude
X
0,
2k-1
Biased
X+B
B
Representation
for X<0
2k-1+|X|
X+B
typical B=2k-1 or 2k-1-ulp
Complement
X
Two’s
complement
X
One’s
complement
X
0, M mod 2k
0
0, 2k-ulp
M-|X|=M+X
2k-|X|= X  ulp
2k-ulp-|X|= X
Value of a number in the signed representations
Representation
Signedmagnitude
Value of
(xk-1 xk-2 … x1 x0.x-1 … x-l)
X  ( 1)
x k 1
k 2
i
x

2
i
i  l
k 1
Biased
Two’s
complement
X   xi  2i  B
i  l
X   xk 1 2
k 1
k 2
  xi  2i
i  l
k 2
One’s
complement
X   xk 1 (2k 1  ulp)   xi  2i
i  l
Extending the number of bits of a signed number
X
xk-1 xk-2 … x1 x0 . x-1 x-2 … x-l
Y
yk’-1 yk’-2 … yk yk-1 yk-2 … y1 y0 . y-1 y-2 … y-l y-(l+1) … y-l’
signed-magnitude
xk-1 0 0 0 0 0 0 0 xk-2 … x1 x0 . x-1 x-2 … x-l 0 0 0 0 0 0
two’s complement
xk-1 xk-1 xk-1 . . .xk-1 xk-2 … x1 x0 . x-1 x-2 … x-l 0 0 0 0 0 0
one’s complement
xk-1 xk-1 xk-1 . . .xk-1 xk-2 … x1 x0 . x-1 x-2 … x-l xk-1 . . . .xk-1
biased
xk-1 xk 1 . . . xk 1 xk-2 … x1 x0 . x-1 x-2 … x-l 0 0 0 0 0 0
Generalized Complement Representation
Generalized complement representation
of signed integers
M-N > P
M ≥ N+P+1
Generalized complement representation
of signed integers
Little-Endian vs. Big-Endian
Representation of
Integers
Little-Endian vs. Big-Endian Representation
A0 B1 C2 D3 E4 F5 67 8916
MSB
LSB
Little-Endian
Big-Endian
0
MSB = A0
B1
C2
D3
E4
F5
67
LSB = 89
address
MAX
LSB = 89
67
F5
E4
D3
C2
B1
MSB = A0
Little-Endian vs. Big-Endian Camps
0
MSB
LSB
...
...
address
MSB
LSB
MAX
Big-Endian
Little-Endian
Motorola 68xx, 680x0
IBM
Bi-Endian
Hewlett-Packard
Motorola Power PC
Sun SuperSPARC
Silicon Graphics MIPS
Internet TCP/IP
IA-64
Xilinx MicroBlaze
ARM v.3 and above
Intel
AMD
DEC Alpha
RS 232
Altera Nios II
Little-Endian vs. Big-Endian
Origin of the terms
Jonathan Swift, Gulliver’s Travels
• A law requiring all citizens of Lilliput to break their soft-eggs
at the little ends only
• A civil war breaking between the Little Endians and
the Big-Endians, resulting in the Big Endians taking refuge on
a nearby island, the kingdom of Blefuscu
• Satire over holy wars between Protestant Church of England
and the Catholic Church of France
Little-Endian vs. Big-Endian
Advantages and Disadvantages
Big-Endian
• easier to determine a sign of
the number
• easier to compare two numbers
• easier to divide two numbers
• easier to print
Little-Endian
• easier addition and multiplication
of multiprecision numbers
Pointers (1)
Big-Endian
0
address
MAX
Little-Endian
int * iptr;
89
67
F5
E4
D3
C2
B1
A0
(* iptr) = 8967;
iptr+1
(* iptr) = 6789;
Pointers (2)
Big-Endian
0
address
MAX
Little-Endian
long int * lptr;
89
67
F5
E4
D3
C2
B1
A0
(* lptr) = 8967F5E4;
lptr + 1
(* lptr) = E4F56789;