ECE 645: Lecture 4

Number Representation Part 1

Fixed-Point Representations. Endianness. Required Reading

B. Parhami, : Algorithms and Hardware Design Chapter 1, 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 does this stone carving from Karnak represent?

Historical Representations: Ancient Egyptians Numerals (3) Historical Representations: Ancient Egyptians Numerals (4)

Symbol for a (part):

Special symbols for most commonly used :

Historical Representations: Ancient Babylonian Numerals (1)

– First known positional system – 3100 BC – 60 () – 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

– 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 System

Brahmi numerals, India, 400 BC-400 AD

Evolution of numerals in early Europe Positional Code 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

• ~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 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 , 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 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 is equal the sundial's geographical 27° north - The is read by observing where the shadow is sharpest at the time - Accuracy of 2 - Reconstructed in 1901 Jantar Mantar - Jaipur, India Original Units of Time

- 1 day = 60 ghadis (1 ghadi = 24 ) - 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 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

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