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 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.,
3 2 1 0 4 *10 + 8*10 + 5*10 + 6*10 = (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
3 2 1 0 (0101)2 = 0*2 +1*2 + 0*2 +1*2 = (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 3 + 1 fixed-point, point xxx.x
Signed fraction, ±.xxx ±
2’s-compl. fraction, x.xxx
2 + 2 floating-point, s × 2 e e s floating e in [−2, 1], s in [0, 3] point 2 + 2 logarithmic (log = xx.xx) log x
17 Classification of number systems (1)
Number system
Positional Non-positional
Fixed-radix Mixed-radix
Conventional Unconventional
Binary Signed-digit Decimal Hexadecimal Non-redundant Redundant Classification of number systems (2)
Positional k−1 X x w w - weight of the digit x = ∑ i ⋅ i i i i=−l Fixed-radix k−1 X x ri r - radix of the number system = ∑ i ⋅ i=−l
Conventional fixed-radix k−1 r integer, r > 0 X = x ⋅ ri ∑ i xi ∈ {0, 1, …, r-1} i=−l Classification of number systems (3)
Unconventional fixed-radix k−1 i X x r xi ∈ {-α, …, β } = ∑ i ⋅ i=−l
Signed-digit α>0 ⇒ negative digits Non-redundant number of digits = α + β + 1 ≤ r Redundant 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 = 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 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
Positional Non-positional
Fixed-radix Mixed-radix
Conventional Unconventional (signed) (unsigned) Binary Signed-digit Decimal Hexadecimal
Non-redundant Redundant 29 Range of numbers
Number system Xmin Xmax
Decimal
k -l X = (xk-1 xk-2 … x1 x0.x-1 … x-l)10 0 10 - 10 Binary
k -l X = (xk-1 xk-2 … x1 x0.x-1 … x-l)2 0 2 - 2 Conventional fixed-radix
k -l X = (xk-1 xk-2 … x1 x0.x-1 … x-l)r 0 r - r
Notation: unit in the least significant position -l ulp = r unit in the last position Number of digits
Number of digits in the integer Number system 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 k = ⎣logr X max ⎦+1 = fixed-radix = ⎡logr (X max +1)⎤ Radix Conversion
Whole part Fractional part
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
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: (105)ten = (?)five Repeatedly divide by five Quotient Remainder 105 0 21 1 4 4 0 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 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 X = (x x … x x ) = x ⋅ R i = I k-1 k-2 1 0 R ∑ i i=0
= ((...((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 R + xk-2 xk-3 xk-1 xk-2 0 xk-1 Radix Conversion of the Fractional Part R - destination radix
−1 i X = (. x x … x x ) = x i ⋅ R = F -1 -2 -l+1 -l R ∑ i=−l -1 -1 -1 -1 -1 = R (x-1 + R (x-2 + R (…. + R ( x-l+1 + R x-l )….))) Integer part Fractional part -1 -1 -1 -1 x-1 R (x-2 + R (….. + R ( x-l+1 + R x-l)….)) x -1 -1 -1 -2 R (….. + R ( x-l+1 + R x-l)….) ………. ………. -1 -1 x-l+2 R ( x-l+1 + R x-l) x -1 -l+1 R x-l x-l 0 Option 2: Arithmetic in new radix R
Converting fractional part v: (410.22033)five = (105.?)ten 5 (0.22033)five × 5 = (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 : : : !Horner s ! |------| : : ! rule or ! 60 : : ! ! |------| : !formula ! 303 : ! ! |------| ! !! 1518
From: Parhami, Computer Arithmetic: Algorithms and Hardware Design 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! Horner’s |-----| : : : : ! 0.6 : : : : ! rule or |------| : : : ! formula 3.6 : : : ! |------| : : ! 0.72 : : ! |------| : ! 2.144 : ! |------| ! 2.4288 ! |------|! 0.48576!
From: Parhami, Computer Arithmetic: Algorithms and Hardware Design 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 Complement
Radix-complement Diminished-radix complement (Digit complement) r=2 r=2 Two’s complement One’s complement Signed- Biased Two’s One’s magnitude complement complement 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 0 0000 1000 0000 0000 -0 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 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
R(X) = X + B B = 2k-1, k=4
-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 − i R(X ) = ∑ xi ⋅2 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 − i R(X ) = ∑ xi ⋅2 i=−l Useful dependencies
1 – xi = xi
X when X ≥ 0 xi 1 – xi xi |X| = 0 1 1 - X when X < 0 1 0 0 One’s complement transformation
For k 1 − i A = ∑ Ai ⋅2 ≥ 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 0 ≤ OC(A) ≤ 2k – 2-l – Ak-1 Ak-2 … A0 . A-1 A-2 ... A-l
OC(OC(A)) = A Ak-1 Ak-2 … A0 . A-1 A-2 ... A-l 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 k=4 X 0, X+2k-1 = 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 One’s complement representation of signed numbers
+15 +0 +1
+14 +2
+13 +3
+12 +4
+11 +5
+10 +6
+9 +7 +8 Two’s complement transformation (1)
k 1 For − i A = ∑ Ai ⋅2 ≥ 0 i=−l
-l k def A + 2 = 2 – A for A > 0 TC(A) = 0 for A = 0
2k – A = 2k – A – 2-l + 2-l = 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)
k 1 For − i A = ∑ Ai ⋅2 ≥ 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 R(X) = TC(|X|) for X < 0
0 ≤ R(X) ≤ 2k – 2-l Two’s complement representation of signed integers
X>0 0 X<0 k=4 X 0 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
+11 +5
+10 +6
+9 +7 +8 Signed-magnitude representation of signed numbers
X>0 0 X<0 k=4 X 0, | X|+2k-1 = -X+2k-1 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
+11 +5
+10 +6
+9 +7 +8 Biased representation of signed numbers
X>0 0 X<0 B = 2k-1, k=4 X+B B X+B
-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 Biased representation of signed numbers
+15 +0 +1
+14 +2
+13 +3
+12 +4
+11 +5
+10 +6
+9 +7 +8 Arithmetic Operations in Signed Number Representations Unsigned addition vs. signed addition
Machine Programmer Unsigned Signed weight 128 64 32 16 8 4 2 1 mind mind carry 1 1 1 X 0 0 0 1 0 0 1 1 + Y 1 0 0 0 0 1 0 1 = S 1 0 0 1 1 0 0 0
x7 y7 x6 y6 x5 y5 x4 y4 x3 y3 x2 y2 x1 y1 x0 y0
FA FA FA FA FA FA FA FA c8 c7 c6 c5 c4 c3 c2 c1
s7 s6 s5 s4 s3 s2 s1 s0 Out of range flags
Carry flag - C out-of-range for unsigned numbers
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
Overflow flag - V out-of-range for signed numbers
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 Overflow for signed numbers
Indication of overflow Positive Negative + Positive + 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
+11 +5
+10 +6
+9 +7 +8 Addition of Signed and Unsigned Numbers
C=1 and V=0
8 4 2 1 -8 4 2 1 1 1 0 1 13 1 1 0 1 -3 1 0 1 1 11 1 0 1 1 -5 1 1 0 0 0 24≠8 1 1 0 0 0 -8
C=0 and V=1
8 4 2 1 -8 4 2 1 0 0 1 1 3 0 0 1 1 3 0 1 1 0 6 0 1 1 0 6 1 0 0 1 9 1 0 0 1 9≠-7 Addition of Signed and Unsigned Numbers
C=0 and V=0
8 4 2 1 -8 4 2 1 0 1 0 1 5 0 1 0 1 5 1 0 0 1 9 1 0 0 1 -7 1 1 1 0 14 1 1 1 0 -2
C=1 and V=1
8 4 2 1 -8 4 2 1 1 1 0 0 12 1 1 0 0 -4 1 0 1 1 11 1 0 1 1 -5 1 0 1 1 1 23≠7 1 0 1 1 1 -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 4 2 1 8 4 2 1 1 0 1 0 -5 0 0 1 0 2 1 1 0 1 -2 1 1 1 0 -1 1 0 1 1 1 1 0 0 0 0 + 1 + 1 0 0 0 1 1 1 0 0 0 -7
Disadvantage: Need another adder after end-arround carry the addition is complete! One’s complement representation of signed numbers
+15 +0 +1
+14 +2
+13 +3
+12 +4
+11 +5
+10 +6
+9 +7 +8 Addition and subtraction Signed-magnitude
Numbers of the same sign Numbers of the opposite sign
sign bit magnitude sign bit magnitude
0 1 0 1 1 11 1 1 0 1 1 -11 + 0 0 1 1 0 6 + 0 0 1 1 0 6 0 1 0 0 0 1 17 11 > 6
1 0 1 1 11 carry = overflow – 0 1 1 0 6 1 0 1 0 1 5
Signed Number Representations
Summary Representing k-bit signed binary numbers
Representation Representation Representation Representation for X>0 for 0 for X<0 0, Signed- k-1 X k-1 2 +|X| magnitude 2
Biased X+B B X+B typical B=2k-1 or 2k-1-ulp Complement X 0, M mod 2k M-|X|=M+X Two’s X 0 k complement 2 -|X|= X + ulp
One’s 0, 2k-ulp 2k-ulp-|X|= X complement X Value of a number in the signed representations
Value of Representation (xk-1 xk-2 … x1 x0.x-1 … x-l)
k−2 Signed- x X ( 1) k −1 x 2i magnitude = − ∑ i ⋅ i=−l
k−1 X x 2i B Biased = ∑ i ⋅ − i=−l
k−2 Two’s X x 2k−1 x 2i = − k−1 + ∑ i ⋅ complement i=−l
k−2 One’s X x (2k−1 ulp) x 2i = − k−1 − + ∑ i ⋅ complement 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
Big-Endian Little-Endian 0 MSB = A0 LSB = 89 B1 67 C2 F5 D3 E4 address E4 D3 F5 C2 67 B1 LSB = 89 MSB = A0 MAX Little-Endian vs. Big-Endian Camps
0 MSB LSB
...... address LSB MSB
MAX
Big-Endian Little-Endian Motorola 68xx, 680x0 IBM Bi-Endian Intel AMD Hewlett-Packard Motorola Power PC
Sun SuperSPARC Silicon Graphics MIPS DEC Alpha Internet TCP/IP IA-64 RS 232
Xilinx MicroBlaze ARM v.3 and above 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 Little-Endian
• easier to determine a sign of • easier addition and multiplication the number of multiprecision numbers
• easier to compare two numbers
• easier to divide two numbers
• easier to print Pointers (1)
Big-Endian Little-Endian
0 int * iptr; 89 (* iptr) = 8967; (* iptr) = 6789; 67 F5 address E4 iptr+1 D3 C2 B1 A0 MAX Pointers (2)
Big-Endian Little-Endian
0 long int * lptr; 89 (* lptr) = 8967F5E4; (* lptr) = E4F56789; 67 F5 address E4 D3 C2 lptr + 1 B1 A0 MAX