ECE 645: Lecture 4 Number Representation Part 1 Fixed-Point - - PowerPoint PPT Presentation
ECE 645: Lecture 4 Number Representation Part 1 Fixed-Point - - PowerPoint PPT Presentation
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,
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:
– First known positional system – 3100 BC – Radix 60 (sexagesimal) – Two symbols: = 1 = 10
Historical Representations: Ancient Babylonian Numerals (1)
− 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 56 x 600 = (4,856)10
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 10 8 10 5 10 6 10 4 856
3 2 1 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
( ) ( )
10 1 2 3 2
5 2 * 1 2 * 2 * 1 2 * 0101 = + + + =
16
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
17
2 4 6 8 10 12 14 16 −2 −4 −6 −8 −10 −12 −14 −16
Unsigned integers Signed-magnitude 3 + 1 fixed-point, xxx.x Signed fraction, ±.xxx 2’s-compl. fraction, x.xxx 2 + 2 floating-point, s × 2 e in [−2, 1], s in [0, 3] 2 + 2 logarithmic (log = xx.xx)
± ±
Number format
log x s e
e fixed point floating point
Encoding Numbers in 4-Bits
Number system Positional Non-positional Fixed-radix Mixed-radix Conventional Unconventional Signed-digit Non-redundant Redundant Binary Decimal Hexadecimal
Classification of number systems (1)
Classification of number systems (2)
Positional
wi - weight of the digit xi
Fixed-radix
i k l i i w
x X ⋅ = ∑
− − = 1
i k l i i r
x X ⋅ = ∑
− − = 1
r - radix of the number system
Conventional fixed-radix
i k l i i r
x X ⋅ = ∑
− − = 1
r integer, r > 0 xi ∈ {0, 1, …, r-1}
Classification of number systems (3)
Unconventional fixed-radix
i k l i i r
x X ⋅ = ∑
− − = 1
xi ∈ {-α, …, β } Non-redundant number of digits = α + β + 1 ≤ r Redundant number of digits = α + β + 1 > r Signed-digit α>0 ⇒ negative digits
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 = 24 minutes)
- 1 ghadi = 60 pals (1 pal = 24 seconds)
- 1 pal = 4 breaths (1 breath = 6 seconds)
Original weights: 60*60*4 60*4 4 breaths day ghadi pal Current weights: 24*60*60 60*60 60 seconds day hour minute
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-point representation
Fixed-Radix Conventional (Unsigned) Representations
29
Fixed Point Number system Positional Non-positional Fixed-radix Mixed-radix Conventional (unsigned) Unconventional (signed) Signed-digit Non-redundant Redundant Binary Decimal Hexadecimal
Fixed-Radix Conventional Number Systems
Range of numbers
Decimal X = (xk-1 xk-2 … x1 x0.x-1 … x-l)10 Xmin Xmax 10k - 10-l Binary Number system X = (xk-1 xk-2 … x1 x0.x-1 … x-l)2 2k - 2-l Conventional fixed-radix X = (xk-1 xk-2 … x1 x0.x-1 … x-l)r rk - r-l ulp = r-l Notation:
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 Binary Conventional fixed-radix
⎣ ⎦ ⎡ ⎤
) 1 ( log 1 log
max 10 max 10
+ = = + = X X k
⎣ ⎦ ⎡ ⎤
) 1 ( log 1 log
max 2 max 2
+ = = + = X X k
⎣ ⎦ ⎡ ⎤
) 1 ( log 1 log
max max
+ = = + = X X k
r r
32
Radix Conversion
Option 1) Radix conversion, using arithmetic in the old radix r Convenient when converting from r = 10 or familiar radix
u = w . v = ( xk–1xk–2 . . . x1x0 . x–1x–2 . . . x–l )r Old = ( XK–1XK–2 . . . X1X0 . X–1X–2 . . . X–L )R New
Option 2) Radix conversion, using arithmetic in the new radix R Convenient when converting to R = 10 or familiar radix
Whole part Fractional part Example: (31)eight = (25)ten
From: Parhami, Computer Arithmetic: Algorithms and Hardware Design
Two methods:
33
Option 1: Arithmetic in old radix r
Converting whole part w: (105)ten = (?)five Repeatedly divide by five Quotient Remainder 105 21 1 4 4 Therefore, (105)ten = (410)five Converting fractional part v: (105.486)ten = (410.?)five Repeatedly multiply by five Whole Part Fraction .486 2 .430 2 .150 .750 3 .750 3 .750 Therefore, (105.486)ten ≅ (410.22033)five
From: Parhami, Computer Arithmetic: Algorithms and Hardware Design
Radix Conversion of the Integral Part
XI = (xk-1 xk-2 … x1 x0)R = =
R - destination radix
i k i i R
x ⋅
∑
− = 1
= ((...((xk-1 R + xk-2) R + xk-3 ) R + … + x2 ) R + x1 ) R + x0 Quotient Remainder (...((xk-1 R + xk-2) R + xk-3 ) R + … + x2 ) R + x1 x0 ...((xk-1 R + xk-2) R + xk-3 ) R + … + x2 x1 xk-1 xk-2 xk-1
………. ……….
xk-1 R + xk-2 xk-3
Radix Conversion of the Fractional Part
XF = (. x-1 x-2 … x-l+1 x-l)R = =
R - destination radix
i l i i R
x ⋅
∑
− − = 1
= 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)….)) R-1 (….. + R-1 ( x-l+1 + R-1 x-l)….) x-2 x-l+1 R-1 x-l x-l
………. ……….
x-l+2 R-1 ( x-l+1 + R-1 x-l)
36
Option 2: Arithmetic in new radix R
Converting (22033)five = (?)ten
((((2 × 5) + 2) × 5 + 0) × 5 + 3) × 5 + 3 |-----| : : : : 10 : : : : |-----------| : : : 12 : : : |---------------------| : : 60 : : |-------------------------------| : 303 : |-----------------------------------------|
- 1518
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
Horner’s rule or formula
From: Parhami, Computer Arithmetic: Algorithms and Hardware Design
37
Option 2 cont'd: Horner's rule for fractions
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
Horner’s rule or formula
From: Parhami, Computer Arithmetic: Algorithms and Hardware Design
Horner’s rule is also applicable: Proceed from right to left and use division instead of multiplication
38
r=bg → b → R=bG 4=22 → 2 → 8=23 (2301.302)4 = (10 110 001. 110 010)2 = (261.62)8
Radix Conversion Shortcut for r=bg, R=bG
- 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
Signed Number Representations
Representations of signed numbers
Signed-magnitude Biased Complement
Radix-complement Diminished-radix complement (Digit complement) Two’s complement One’s complement r=2 r=2
7 0111 1111 0111 0111 6 0110 1110 0110 0110 5 0101 1101 0101 0101 4 0100 1100 0100 0100 3 0011 1011 0011 0011 2 0010 1010 0010 0010 1 0001 1001 0001 0001 0000 1000 0000 0000
1000 1111
- 1
1001 0111 1111 1110
- 2 1010
0110 1110 1101
- 3
1011 0101 1101 1100
- 4
1100 0100 1100 1011
- 5
1101 0011 1011 1010
- 6
1110 0010 1010 1001
- 7
1111 0001 1001 1000
- 8 0000
1000
Signed- magnitude Biased Two’s complement One’s complement
Signed-magnitude representation of signed numbers
Advantages: Disadvantages:
- conceptual simplicity
- symmetric range: -(2k-1-1) .. -(2k-1-1)
- simple negation
- addition of numbers with the same sign and with
a different sign handled differently
k-2 k-1
sign magnitude
Biased (excess-B) representation of signed integers
- 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
B = 2k-1, k=4 R(X) = X + B
- 2k-1 ≤ X ≤ 2k-1-1
X R(X) R
Signed number X Unsigned Representation R(X) Bit vector (xk-1xk-2...x0.x-1...x-l) Binary mapping Representation mapping
i k l i i
x X R 2 ) (
1
⋅ ∑ =
− − =
Biased representation with radix 2
Complement Signed Number Representations
Signed number X Unsigned Representation R(X) Bit vector (xk-1xk-2...x0.x-1...x-l) Binary mapping Representation mapping
i k l i i
x X R 2 ) (
1
⋅ ∑ =
− − =
Complement representations with radix 2
1 – xi = xi 1 – xi xi xi 1 1 1
Useful dependencies
|X| = X when X ≥ 0
- X when X < 0
One’s complement transformation OC(A) = A = 2k – 2-l - A For
i k l i i
A A 2
1
⋅ ∑ =
− − =
≥ 0
0 ≤ OC(A) ≤ 2k – 2-l OC(OC(A)) = A
def
k-1 k-2 ... 0 -1 -2 ... -l
1 1 ... 1 . 1 1 ... 1 – Ak-1 Ak-2 … A0 . A-1 A-2 ... A-l Ak-1 Ak-2 … A0 . A-1 A-2 ... A-l Properties:
One’s Complement Representation
- f Signed Numbers
R(X) = X for X > 0 0 or OC(0) for X = 0 OC(|X|) for X < 0 For –(2k-1 – 2-l) ≤ X ≤ 2k-1 – 2-l 0 ≤ R(X) ≤ 2k – 2-l
def
One’s complement representation of signed integers
- 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
X k=4 X>0 X<0 X+2k-1 = 2k-1 - |X| 0, 2k-1
One’s complement representation of signed numbers
+0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15
Two’s complement transformation (1) A + 2-l = 2k – A for A > 0 For
i k l i i
A A 2
1
⋅ ∑ =
− − =
≥ 0
def
Properties: TC(A) = 0 for A = 0 0 ≤ TC(A) ≤ 2k – 2-l TC(TC(A)) = A 2k – A = 2k – A – 2-l + 2-l = = (2k – 2-l – A)+2-l = A + 2-l
Two’s complement transformation (2) For
i k l i i
A A 2
1
⋅ ∑ =
− − =
≥ 0 A + 2-l mod 2k = 2k – A mod 2k
def
TC(A) =
Two’s Complement Representation
- f Signed Numbers
R(X) = X for X ≥ 0 TC(|X|) for X < 0 For –2k-1 ≤ X ≤ 2k-1 – 2-l 0 ≤ R(X) ≤ 2k – 2-l
def
Two’s complement representation of signed integers
- 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
X k=4 X>0 X<0 X+2k = 2k - |X|
Two’s complement representation of signed integers
+0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15
Signed-magnitude representation of signed numbers
- 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
X k=4 X>0 X<0 | X|+2k-1 = -X+2k-1 0, 2k-1
Signed-magnitude representation of signed numbers
+0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15
Biased representation of signed numbers
- 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
X+B B = 2k-1, k=4 X>0 X<0 X+B B
Biased representation of signed numbers
+0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15
Arithmetic Operations in Signed Number Representations
Unsigned addition vs. signed addition
Machine Programmer
0 0 0 1 0 0 1 1 1 0 0 0 0 1 0 1 1 0 0 1 1 0 0 0
1 1 1 Unsigned mind Signed mind
128 64 32 16 8 4 2 1
weight carry
X Y S
+ = FA x0 y0 s0 c1 FA x1 y1 s1 c2 FA x2 y2 s2 c3 FA x3 y3 s3 c4 FA x4 y4 s4 c5 FA x5 y5 s5 c6 FA x6 y6 s6 c7 FA x7 y7 s7 c8
Out of range flags
C = 1 if result > MAX_UNSIGNED or result < 0 0 otherwise
where MAX_UNSIGNED = 28-1 for 8-bit operands 216-1 for 16-bit operands
V = 1 if result > MAX_SIGNED or result < MIN_SIGNED 0 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
Carry flag - C Overflow flag - V
- ut-of-range for unsigned numbers
- ut-of-range for signed numbers
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
+0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15
Addition of Signed and Unsigned Numbers
C=1 and V=0 1 1 0 1 -3 1 0 1 1 -5
- 8 4 2 1
1 1 0 0 0 -8 0 0 1 1 3 0 1 1 0 6
- 8 4 2 1
1 0 0 1 9≠-7 1 1 0 1 13 1 0 1 1 11
8 4 2 1
1 1 0 0 0 24≠8 C=0 and V=1 0 0 1 1 3 0 1 1 0 6
8 4 2 1
1 0 0 1 9
Addition of Signed and Unsigned Numbers
C=0 and V=0 0 1 0 1 5 1 0 0 1 -7
- 8 4 2 1
1 1 1 0 -2 1 1 0 0 -4 1 0 1 1 -5
- 8 4 2 1
1 0 1 1 1 -9≠-7 0 1 0 1 5 1 0 0 1 9
8 4 2 1
1 1 1 0 14 C=1 and V=1 1 1 0 0 12 1 0 1 1 11
8 4 2 1
1 0 1 1 1 23≠7
Can replace this with k xor gates
Two's Complement Adder/Subtractor Architecture
Arithmetic Shift
Two’s complement Sh.L {001012 = +5} = 010102 = +10 Sh.L {110112 = -5} = 101102 = -10 Sh.L {010102 = +10} = 101002 = - 12
- verflow
Sh.R {001012 = +5} = 000102 = +2 rem 1 Sh.R {110112 = -5} = 111012 = -3 rem 1
Shift left may cause overflow Shift right requires sign extension
Addition and subtraction
One’s complement
Numbers of the same sign Numbers of the opposite sign 0 0 1 0 2 1 1 1 0 -1
8 4 2 1
1 0 0 0 0 1 0 1 0 -5 1 1 0 1 -2
8 4 2 1
1 0 1 1 1 + 1 1 0 0 0
- 7
end-arround carry + 0 0 0 1 1 1
Disadvantage: Need another adder after the addition is complete!
One’s complement representation of signed numbers
+0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15
Addition and subtraction
Signed-magnitude
Numbers of the same sign Numbers of the opposite sign 0 1 0 1 1 11 0 0 1 1 0 6 sign bit magnitude + 0 1 0 0 0 1 17 carry = overflow 1 1 0 1 1 -11 0 0 1 1 0 6 sign bit magnitude + 11 > 6 1 0 1 1 11 0 1 1 0 6 – 0 1 0 1 5 1
Signed Number Representations
Summary
Representing k-bit signed binary numbers
Representation for X>0 Representation for X<0 Representation for 0 Representation Signed- magnitude X 0, 2k-1 2k-1+|X| Biased X+B B X+B Complement X M-|X|=M+X 0, M mod 2k Two’s complement One’s complement X X 2k-|X|= 2k-ulp-|X|= 0, 2k-ulp
typical B=2k-1 or 2k-1-ulp
ulp X +
X
Value of a number in the signed representations
Representation Value of (xk-1 xk-2 … x1 x0.x-1 … x-l)
Signed- magnitude Biased Two’s complement One’s complement
i k l i i x
x X
k
2 ) 1 (
2
1
⋅ − =
∑
− − =
−
B x X
i k l i i
− ⋅ = ∑
− − =
2
1 i k l i i k k
x x X 2 2
2 1 1
⋅ + − =
∑
− − = − − i k l i i k k
x ulp x X 2 ) 2 (
2 1 1
⋅ + − − =
∑
− − = − −
Extending the number of bits of a signed number
xk-1 xk-2 … x1 x0 . x-1 x-2 … x-l yk’-1 yk’-2 … yk yk-1 yk-2 … y1 y0 . y-1 y-2 … y-l y-(l+1) … y-l’ X Y 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
- ne’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-2 … x1 x0 . x-1 x-2 … x-l 0 0 0 0 0 0
1 − k
x
. . . xk-1
1 − k
x
Generalized Complement Representation
Generalized complement representation
- f signed integers
M-N > P M ≥ N+P+1
Generalized complement representation
- f signed integers
Little-Endian vs. Big-Endian Representation of Integers
Little-Endian vs. Big-Endian Representation
A0 B1 C2 D3 E4 F5 67 8916 LSB MSB
MSB = A0 B1 C2 D3 E4 F5 67 LSB = 89
Big-Endian Little-Endian
LSB = 89
MAX
67 F5 E4 D3 C2 B1 MSB = A0 address
Little-Endian vs. Big-Endian Camps
Big-Endian Little-Endian
MAX
address MSB LSB . . . LSB MSB . . . Motorola 68xx, 680x0 Intel IBM Hewlett-Packard DEC Alpha Internet TCP/IP Sun SuperSPARC
Bi-Endian
Motorola Power PC Silicon Graphics MIPS RS 232 AMD Xilinx MicroBlaze Altera Nios II ARM v.3 and above IA-64
Origin of the terms
Little-Endian vs. Big-Endian
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 Big-Endian Little-Endian
- easier to determine a sign of
the number
- easier to compare two numbers
- easier to divide two numbers
- easier to print
- easier addition and multiplication
- f multiprecision numbers
Advantages and Disadvantages
Pointers (1)
89 67 F5 E4 D3 C2 B1 A0
Big-Endian Little-Endian
MAX
address int * iptr; (* iptr) = 8967; (* iptr) = 6789; iptr+1
Pointers (2)
89 67 F5 E4 D3 C2 B1 A0
Big-Endian Little-Endian
MAX
address long int * lptr; (* lptr) = 8967F5E4; (* lptr) = E4F56789; lptr + 1