Number Representation Part 1 Fixed-Radix Unsigned Representations ECE 645: Lecture 1
Required Reading Chapter 1, Numbers and Arithmetic, Sections B. Parhami, Computer Arithmetic: Algorithms and Hardware Design J-P. Deschamps, G. Bioul, G. Sutter, Synthesis of Arithmetic Circuits: FPGA, ASIC and Embedded Systems, Chapter 1, Introduction Chapter Weighted systems
Codes for Numbers Egyptian –~4000 BC –“Sum of Symbols” =1 =10 =100 = (34) 10
Positional Code for Numbers Babylonians –Positional system –2000 BC –Radix 60 – = 1 = 10
Babylonian Example 1 x x x 60 0 = (4,856) 10
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.,
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.,
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 ( ) allows easy manipulation of symbols
12 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/2 f, a is an integer, f is a positive integer Floating-point number representation systems x * b E, 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
13 fixed point floating point Encoding Numbers in 4-Bits
Number system Positional Non-positional Fixed-radixMixed-radix ConventionalUnconventional Signed-digit Non-redundantRedundant Binary Decimal Hexadecimal Classification of number systems (1)
Classification of number systems (2) Positional w i - weight of the digit x i Fixed-radix r - radix of the number system Conventional fixed-radix r integer, r > 0 x i {0, 1, …, r-1}
Classification of number systems (3) Unconventional fixed-radix x i {- , …, } Non-redundant number of digits = + + 1 r Redundantnumber of digits = + + 1 > r Signed-digit >0 negative digits
Integral and fractional part X = x k-1 x k-2 … x 1 x 0. x -1 x -2 … x -l Integral partFractional part Radix point NOT stored in the register understood to be in a fixed position Fixed-point representation
Fixed-Radix Conventional (Unsigned) Representations
19 Fixed Point Number system Positional Non-positional Fixed-radixMixed-radix Conventional (unsigned) Unconventional (signed) Signed-digit Non-redundantRedundant Binary Decimal Hexadecimal Fixed-Radix Conventional Number Systems
Range of numbers Decimal X = (x k-1 x k-2 … x 1 x 0.x -1 … x -l ) 10 X min X max 10 k l 0 Binary Number system X = (x k-1 x k-2 … x 1 x 0.x -1 … x -l ) k - 2 -l Conventional fixed-radix X = (x k-1 x k-2 … x 1 x 0.x -1 … x -l ) r 0r k - 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..X max Decimal Binary Conventional fixed-radix
22 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 = ( x k–1 x k–2... x 1 x 0. x –1 x –2... x –l ) r Old =( X K–1 X K–2... X 1 X 0. X –1 X –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 partFractional part Example: (31) eight = (25) ten From: Parhami, Computer Arithmetic: Algorithms and Hardware Design Two methods:
23 Option 1: Arithmetic in old radix r Converting whole part w:(105) ten = (?) five Repeatedly divide by fiveQuotientRemainder Therefore, (105) ten = (410) five Converting fractional part v:( ) ten = (410.?) five Repeatedly multiply by fiveWhole PartFraction Therefore, ( ) ten ( ) five From: Parhami, Computer Arithmetic: Algorithms and Hardware Design
Radix Conversion of the Integral Part X I = (x k-1 x k-2 … x 1 x 0 ) R = = R - destination radix = ((...((x k-1 R + x k-2 ) R + x k-3 ) R + … + x 2 ) R + x 1 ) R + x 0 Quotient Remainder (...((x k-1 R + x k-2 ) R + x k-3 ) R + … + x 2 ) R + x 1 x0x0...((x k-1 R + x k-2 ) R + x k-3 ) R + … + x 2 x1x1 x k-1 x k-2 x k-1 0 ……….
Radix Conversion of the Fractional Part X F = (. x -1 x -2 … x -l+1 x -l ) R = = R - destination radix = R -1 (x -1 + R -1 (x -2 + R -1 (…. + R -1 ( x -l+1 + R -1 x -l )….))) Integer partFractional 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...
26 Option 2: Arithmetic in new radix R Converting (22033) five = (?) ten ((((2 5) + 2) 5 + 0) 5 + 3) |-----| : : : : 10 : : : : | | : : : 12 : : : | | : : 60 : : | | : 303 : | | 1518 Converting fractional part v: ( ) five = (105.?) ten ( ) five 5 5 =(22033) five =(1518) ten 1518 / 5 5 =1518 / 3125 = Therefore, ( ) five = ( ) ten Horner’s rule or formula From: Parhami, Computer Arithmetic: Algorithms and Hardware Design
27 Option 2 cont'd: Horner's rule for fractions Converting fractional part v: ( ) five = (?) ten (((((3 / 5) + 3) / 5 + 0) / 5 + 2) / 5 + 2) / 5 |-----| : : : : 0.6 : : : : | | : : : 3.6 : : : | | : : 0.72 : : | | : : | | | | 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
28 r=b g b R=b G 4=2 2 2 8=2 3 ( ) 4 = ( ) 2 = (261.62) 8 Radix Conversion Shortcut for r=b g, R=b G Trick here is to first convert to a number in radix b, then to R Cluster in groups of 3 (because 2 3 = 8) moving away from binary point