Topic 3 Number Representations and Computer Arithmetics Introduction to Computer Systems Engineering (CPEG 323) 2019/1/3 cpeg323-08F\Topic3-05F
Outline Introduction Number representation and 2’s complement ALU design Integer multiplication/division Real Numbers 2019/1/3 cpeg323-08F\Topic3-05F
Recap Review Steps in executing an instruction? Decoded opcode Fields of an instruction? Performance? Base of the operands? ALU ALU 32 a 32 result 32 b What's up ahead: Number representation Arithmetic algorithms Logic implementation Instructions 2019/1/3 cpeg323-08F\Topic3-05F
Reading Up to now, you should have read (or are reading) New material Patterson and Hennessy, chapters 1-2 and appendix A New material Patterson and Hennessy, chapter 3 2019/1/3 cpeg323-08F\Topic3-05F
Numbers Representation It may get complicated: How to represent negative numbers? What is the range of numbers? What if a number is out of the range? How about rational and irrational numbers? How does hardware add/sub/div/mul these numbers? 2019/1/3 cpeg323-08F\Topic3-05F
Bits and Numbers Bits are just bits: NO inherent meaning conventions define relationship between bits and numbers How does the hardware know which convention is to use? Add $s1, $s2, $s3 Addu $s1, $s2, $s3 What is the sign of $s1, $s2, and $s3? 2019/1/3 cpeg323-08F\Topic3-05F
Number Representations Unsigned integers Signed integers BCD (Binary Coded Decimal) Fixed point Floating point Other types of data: Characters (ASCII, Unicode) Pixels (graphics) Groups of bits 2019/1/3 cpeg323-08F\Topic3-05F
Unsigned Integers Why unsigned integers? How to represent? Memory access, PC, SP, RA In C, unsigned int How to represent? Number your fingers! Radix number system Decimal: 10 different symbols: 0 1 2 3 4 5 6 7 8 9 number= 2019/1/3 cpeg323-08F\Topic3-05F
Unsigned Integers(Radix number system) In general, k-radix number system number= How many different di? What is the biggest number? What is the smallest one? Special cases: 2-radix (binary) 8 (octal) 16 (hexademical) How many different symbols do thy have? 2019/1/3 cpeg323-08F\Topic3-05F
Unsigned Integers(Radix number system, Cont.) How to convert binary to octal and hexadecimal? Example: 010100=(0 *22+1 *21+0*20)*23+(1*22+0*21+0*20) =2*81+ 4 *80= 248 Hexadecimal: 1 9 4 8 B 6 Binary: 000110010100100010110110 0 6 2 4 4 2 6 6 Octal: 2019/1/3 cpeg323-08F\Topic3-05F
Unsigned Integers(BCD: binary coded decimal) Representation: 12710 How many bits necessary for BCD? For binary? Storage space used ? Addition How to determine a carry: “If ai+ bi >10” vs. “If ai+ bi >2” Which one is more efficient for computer, decimal or binary? Also, packed BCD 2019/1/3 cpeg323-08F\Topic3-05F
Signed Integers How to distinguish a negative number from a positive number ? How to do so efficiently ? 2019/1/3 cpeg323-08F\Topic3-05F
Signed Integers (Sign and magnitude) -12: -(sign) 12(absolute value) A separate sign bit A magnitude For hardware: Where to put the sign bit? Right or Left? How to know the sign of addition? (e.g. one extra step ?) What is the sign of 0? (positive and negative 0 ?) 2019/1/3 cpeg323-08F\Topic3-05F